<?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>127629</bug_id>
          
          <creation_ts>2014-01-25 13:29:55 -0800</creation_ts>
          <short_desc>Web Inspector: Move InspectorDebuggerAgent into JavaScriptCore</short_desc>
          <delta_ts>2014-01-26 00:35:13 -0800</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>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>InRadar</keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Joseph Pecoraro">joepeck</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>bunhere</cc>
    
    <cc>commit-queue</cc>
    
    <cc>ggaren</cc>
    
    <cc>graouts</cc>
    
    <cc>gyuyoung.kim</cc>
    
    <cc>joepeck</cc>
    
    <cc>mark.lam</cc>
    
    <cc>mkwst</cc>
    
    <cc>rakuco</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>972030</commentid>
    <comment_count>0</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-01-25 13:29:55 -0800</bug_when>
    <thetext>Now that we have all the pieces for DebuggerAgent (InjectedScript, ScriptDebugServer) move DebuggerAgent into JavaScriptCore.

I also just realized that because JSContext inspection only happens through the remote interface, other ports don&apos;t need to compile the JSGlobalObject{InspectorController,ScriptDebugServer,RuntimeAgent,DebuggerAgent} and the new EventLoop class. So leaving these files out of those port&apos;s builds. They can add them when enabling REMOTE_INSPECTOR or providing a way to access this without REMOTE_INSPECTOR.

After this lands, with one patch to WebInspectorUI to feature check for all missing agents we should have a working remote inspector for a JSContext!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972031</commentid>
    <comment_count>1</comment_count>
    <who name="Radar WebKit Bug Importer">webkit-bug-importer</who>
    <bug_when>2014-01-25 13:30:19 -0800</bug_when>
    <thetext>&lt;rdar://problem/15909749&gt;</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972034</commentid>
    <comment_count>2</comment_count>
      <attachid>222231</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-01-25 13:39:26 -0800</bug_when>
    <thetext>Created attachment 222231
[PATCH] Proposed Fix

- Adds JSGlobalObject ScriptDebugServer, DebuggerAgent, and hooks it up in InspectorController
- Adds JSC EventLoop implementation when paused debugging a JSGlobalObject, separate from WebCore&apos;s EventLoop impl
- Adds test for console.assert pausing, which was untested before and had a slight path change</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972035</commentid>
    <comment_count>3</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2014-01-25 13:40:57 -0800</bug_when>
    <thetext>Attachment 222231 did not pass style-queue:


ERROR: Source/JavaScriptCore/inspector/JSGlobalObjectInspectorController.cpp:39:  Alphabetical sorting problem.  [build/include_order] [4]
ERROR: Source/JavaScriptCore/inspector/agents/JSGlobalObjectDebuggerAgent.cpp:31:  Alphabetical sorting problem.  [build/include_order] [4]
Total errors found: 2 in 38 files


If any of these errors are false positives, please file a bug against check-webkit-style.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972038</commentid>
    <comment_count>4</comment_count>
      <attachid>222231</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-01-25 13:50:00 -0800</bug_when>
    <thetext>Comment on attachment 222231
[PATCH] Proposed Fix

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

&gt; Source/JavaScriptCore/JavaScriptCore.vcxproj/JavaScriptCore.vcxproj.filters:-308
&gt; -    &lt;ClCompile Include=&quot;..\inspector\agents\JSGlobalObjectRuntimeAgent.cpp&quot;&gt;
&gt; -      &lt;Filter&gt;inspector&lt;/Filter&gt;
&gt; -    &lt;/ClCompile&gt;

Oop, I&apos;ll also add the InspectorDebuggerAgent.* to the JSC.vcxproj.filters file. Not needed for compile, just for Visual Studio&apos;s UI.

&gt; Source/JavaScriptCore/JavaScriptCore.xcodeproj/project.pbxproj:4634
&gt; +				A503FA1C188E0FB000110F14 /* JSJavaScriptCallFrame.h in Headers */,

This looks unnecessary. From and old old version. I&apos;ll remove.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972076</commentid>
    <comment_count>5</comment_count>
      <attachid>222239</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-01-25 16:25:36 -0800</bug_when>
    <thetext>Created attachment 222239
[PATCH] Proposed Fix

- Fixed style
- Added to more non-critical build files
- EFL build fix attempt with includes</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972080</commentid>
    <comment_count>6</comment_count>
      <attachid>222239</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2014-01-25 16:33:05 -0800</bug_when>
    <thetext>Comment on attachment 222239
[PATCH] Proposed Fix

rs=me</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>972167</commentid>
    <comment_count>7</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2014-01-26 00:35:13 -0800</bug_when>
    <thetext>Landed &lt;http://trac.webkit.org/changeset/162799&gt;.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222231</attachid>
            <date>2014-01-25 13:39:26 -0800</date>
            <delta_ts>2014-01-25 16:25:36 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>debuggeragent.patch</filename>
            <type>text/plain</type>
            <size>130976</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9wYXVz
ZS1vbi1hc3NlcnQtZXhwZWN0ZWQudHh0IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29s
L2RlYnVnZ2VyL3BhdXNlLW9uLWFzc2VydC1leHBlY3RlZC50eHQKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uODlhOWJmOQotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3Rz
L2luc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9wYXVzZS1vbi1hc3NlcnQtZXhwZWN0ZWQudHh0
CkBAIC0wLDAgKzEsMjAgQEAKK0NPTlNPTEUgTUVTU0FHRTogbGluZSAxMDogU2hvdWxkIGFsd2F5
cyBmYWlsLgorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDIyOiBBU1NFUlQgbWVzc2FnZQorVGVzdCB0
aGF0IGEgZmFpbGluZyBjb25zb2xlLmFzc2VydCB3aWxsIHBhdXNlIGluIHRoZSBkZWJ1Z2dlciB3
aXRoIGFuIG9wdGlvbmFsIG1lc3NhZ2UuCisKK1Nob3VsZCBub3QgcGF1c2Ugb24gcGFzc2luZyBh
c3NlcnQuCitpbnNpZGUgYXNzZXJ0T2theQorU2hvdWxkIHBhdXNlIG9uIGZhaWxpbmcgYXNzZXJ0
LgoraW5zaWRlIGFzc2VydEZhbHNlCitQQVNTOiBQYXVzZWQhCitTaG91bGQgbm90IHBhdXNlIG9u
IHBhc3NpbmcgYXNzZXJ0LgoraW5zaWRlIGFzc2VydENvbmRpdGlvbiwgYW5kIGNvbmRpdGlvbiBp
cyB0cnVlCitTaG91bGQgcGF1c2Ugb24gZmFpbGluZyBhc3NlcnQuCitpbnNpZGUgYXNzZXJ0Q29u
ZGl0aW9uLCBhbmQgY29uZGl0aW9uIGlzIGZhbHNlCitQQVNTOiBQYXVzZWQhCitTaG91bGQgbm90
IHBhdXNlIG9uIHBhc3NpbmcgYXNzZXJ0LgoraW5zaWRlIGFzc2VydENvbmRpdGlvbldpdGhNZXNz
YWdlLCBhbmQgY29uZGl0aW9uIGlzIHRydWUKK1Nob3VsZCBwYXVzZSBvbiBmYWlsaW5nIGFzc2Vy
dCBhbmQgaW5jbHVkZSBhIG1lc3NhZ2UuCitpbnNpZGUgYXNzZXJ0Q29uZGl0aW9uV2l0aE1lc3Nh
Z2UsIGFuZCBjb25kaXRpb24gaXMgZmFsc2UKK1BBU1M6IFBhdXNlZCEKKwpkaWZmIC0tZ2l0IGEv
TGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3BhdXNlLW9uLWFzc2VydC5o
dG1sIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3BhdXNlLW9uLWFz
c2VydC5odG1sCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjM2YzRhZTgKLS0t
IC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIv
cGF1c2Utb24tYXNzZXJ0Lmh0bWwKQEAgLTAsMCArMSw4MCBAQAorPGh0bWw+Cis8aGVhZD4KKzxz
Y3JpcHQgc3JjPSIuLi8uLi9odHRwL3Rlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9yZXNvdXJjZXMv
cHJvdG9jb2wtdGVzdC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0IHNyYz0icmVzb3VyY2VzL2Fzc2Vy
dC5qcyI+PC9zY3JpcHQ+Cis8c2NyaXB0PgorZnVuY3Rpb24gdGVzdCgpCit7CisgICAgSW5zcGVj
dG9yVGVzdC5zZW5kQ29tbWFuZCgiRGVidWdnZXIuZW5hYmxlIiwge30pOworICAgIEluc3BlY3Rv
clRlc3Quc2VuZENvbW1hbmQoIkRlYnVnZ2VyLnNldFBhdXNlT25FeGNlcHRpb25zIiwge3N0YXRl
OiAiYWxsIn0sIEluc3BlY3RvclRlc3QuY2hlY2tGb3JFcnJvcik7CisKKyAgICB2YXIgc3RlcCA9
IG51bGw7CisgICAgdmFyIHN0ZXBzID0gWworICAgICAgICB7CisgICAgICAgICAgICBtZXNzYWdl
OiAiU2hvdWxkIG5vdCBwYXVzZSBvbiBwYXNzaW5nIGFzc2VydC4iLAorICAgICAgICAgICAgZXZh
bHVhdGU6ICJhc3NlcnRUcnVlKCkiLAorICAgICAgICAgICAgcGF1c2U6IGZhbHNlLAorICAgICAg
ICB9LAorICAgICAgICB7CisgICAgICAgICAgICBtZXNzYWdlOiAiU2hvdWxkIHBhdXNlIG9uIGZh
aWxpbmcgYXNzZXJ0LiIsCisgICAgICAgICAgICBldmFsdWF0ZTogImFzc2VydEZhbHNlKCkiLAor
ICAgICAgICAgICAgcGF1c2U6IHRydWUsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAg
ICAgIG1lc3NhZ2U6ICJTaG91bGQgbm90IHBhdXNlIG9uIHBhc3NpbmcgYXNzZXJ0LiIsCisgICAg
ICAgICAgICBldmFsdWF0ZTogImFzc2VydENvbmRpdGlvbih3aW5kb3cpIiwKKyAgICAgICAgICAg
IHBhdXNlOiBmYWxzZSwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgbWVzc2Fn
ZTogIlNob3VsZCBwYXVzZSBvbiBmYWlsaW5nIGFzc2VydC4iLAorICAgICAgICAgICAgZXZhbHVh
dGU6ICJhc3NlcnRDb25kaXRpb24od2luZG93ID09PSBudWxsKSIsCisgICAgICAgICAgICBwYXVz
ZTogdHJ1ZSwKKyAgICAgICAgfSwKKyAgICAgICAgeworICAgICAgICAgICAgbWVzc2FnZTogIlNo
b3VsZCBub3QgcGF1c2Ugb24gcGFzc2luZyBhc3NlcnQuIiwKKyAgICAgICAgICAgIGV2YWx1YXRl
OiAiYXNzZXJ0Q29uZGl0aW9uV2l0aE1lc3NhZ2Uod2luZG93LCAnU2hvdWxkIG5vdCBoYXBwZW4n
KSIsCisgICAgICAgICAgICBwYXVzZTogZmFsc2UsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAg
ICAgICAgICAgIG1lc3NhZ2U6ICJTaG91bGQgcGF1c2Ugb24gZmFpbGluZyBhc3NlcnQgYW5kIGlu
Y2x1ZGUgYSBtZXNzYWdlLiIsCisgICAgICAgICAgICBldmFsdWF0ZTogImFzc2VydENvbmRpdGlv
bldpdGhNZXNzYWdlKHdpbmRvdyA9PT0gbnVsbCwgJ0FTU0VSVCBtZXNzYWdlJykiLAorICAgICAg
ICAgICAgcGF1c2U6IHRydWUsCisgICAgICAgIH0sCisgICAgXTsKKworICAgIEluc3BlY3RvclRl
c3QuZXZlbnRIYW5kbGVyWyJEZWJ1Z2dlci5wYXVzZWQiXSA9IGZ1bmN0aW9uKG1lc3NhZ2VPYmpl
Y3QpCisgICAgeworICAgICAgICBpZiAoc3RlcC5wYXVzZSkKKyAgICAgICAgICAgIEluc3BlY3Rv
clRlc3QubG9nKCJQQVNTOiBQYXVzZWQhIik7CisgICAgICAgIGVsc2UKKyAgICAgICAgICAgIElu
c3BlY3RvclRlc3QubG9nKCJGQUlMOiBQYXVzZWQgd2hlbiB1bmV4cGVjdGVkIik7CisKKyAgICAg
ICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgiRGVidWdnZXIucmVzdW1lIiwge30sIHJ1bk5l
eHRTdGVwKTsKKyAgICB9CisKKyAgICBmdW5jdGlvbiBydW5OZXh0U3RlcCgpIHsKKyAgICAgICAg
c3RlcCA9IHN0ZXBzLnNoaWZ0KCk7CisgICAgICAgIGlmICghc3RlcCkgeworICAgICAgICAgICAg
SW5zcGVjdG9yVGVzdC5jb21wbGV0ZVRlc3QoKTsKKyAgICAgICAgICAgIHJldHVybjsKKyAgICAg
ICAgfQorCisgICAgICAgIC8vIEV2YWx1dGUgdGhlIGNvbW1hbmQgaW5zaWRlIGEgc2V0VGltZW91
dCBzbyB0aGF0IHdlIGNhbiBoaXQgZXhjZXB0aW9ucyBhbmQgYnJlYWsuCisgICAgICAgIC8vIE90
aGVyd2lzZSwgZXZhbHVhdGluZyB0aHJvdWdoIFJ1bnRpbWVBZ2VudCB3aWxsIG5vdCB0cmlnZ2Vy
IGEgcGF1c2UuCisgICAgICAgIC8vIExpa2V3aXNlLCBpZiBubyBwYXVzZSBpcyBleHBlY3RlZCB3
YWl0IGZvciBhIGJpdCBiZWZvcmUgY29udGludWluZy4KKyAgICAgICAgSW5zcGVjdG9yVGVzdC5s
b2coc3RlcC5tZXNzYWdlKTsKKyAgICAgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgiUnVu
dGltZS5ldmFsdWF0ZSIsIHtleHByZXNzaW9uOiAic2V0VGltZW91dChmdW5jdGlvbigpeyIgKyBz
dGVwLmV2YWx1YXRlICsgIn0sIDApIn0sIGZ1bmN0aW9uKHJlc3BvbnNlT2JqZWN0KSB7CisgICAg
ICAgICAgICBJbnNwZWN0b3JUZXN0LmNoZWNrRm9yRXJyb3IocmVzcG9uc2VPYmplY3QpOworICAg
ICAgICAgICAgaWYgKCFzdGVwLnBhdXNlKQorICAgICAgICAgICAgICAgIHNldFRpbWVvdXQocnVu
TmV4dFN0ZXAsIDIwKTsKKyAgICAgICAgfSk7CisgICAgfQorCisgICAgcnVuTmV4dFN0ZXAoKTsK
K30KKzwvc2NyaXB0PgorPC9oZWFkPgorPGJvZHkgb25sb2FkPSJydW5UZXN0KCkiPgorPHA+VGVz
dCB0aGF0IGEgZmFpbGluZyBjb25zb2xlLmFzc2VydCB3aWxsIHBhdXNlIGluIHRoZSBkZWJ1Z2dl
ciB3aXRoIGFuIG9wdGlvbmFsIG1lc3NhZ2UuPC9wPgorPC9ib2R5PgorPC9odG1sPgpkaWZmIC0t
Z2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3Jlc291cmNlcy9h
c3NlcnQuanMgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvcmVzb3Vy
Y2VzL2Fzc2VydC5qcwpuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi4yMDczNGU2
Ci0tLSAvZGV2L251bGwKKysrIGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVn
Z2VyL3Jlc291cmNlcy9hc3NlcnQuanMKQEAgLTAsMCArMSwyMyBAQAorZnVuY3Rpb24gYXNzZXJ0
VHJ1ZSgpCit7CisgICAgbG9nKCJpbnNpZGUgYXNzZXJ0T2theSIpOworICAgIGNvbnNvbGUuYXNz
ZXJ0KHRydWUsICJTaG91bGQgbmV2ZXIgaGFwcGVuLiIpOworfQorCitmdW5jdGlvbiBhc3NlcnRG
YWxzZSgpCit7CisgICAgbG9nKCJpbnNpZGUgYXNzZXJ0RmFsc2UiKTsKKyAgICBjb25zb2xlLmFz
c2VydChmYWxzZSwgIlNob3VsZCBhbHdheXMgZmFpbC4iKTsKK30KKworZnVuY3Rpb24gYXNzZXJ0
Q29uZGl0aW9uKGNvbmRpdGlvbikKK3sKKyAgICBsb2coImluc2lkZSBhc3NlcnRDb25kaXRpb24s
IGFuZCBjb25kaXRpb24gaXMgIiArICEhY29uZGl0aW9uKTsKKyAgICBjb25zb2xlLmFzc2VydChj
b25kaXRpb24pOworfQorCitmdW5jdGlvbiBhc3NlcnRDb25kaXRpb25XaXRoTWVzc2FnZShjb25k
aXRpb24sIG1lc3NhZ2UpCit7CisgICAgbG9nKCJpbnNpZGUgYXNzZXJ0Q29uZGl0aW9uV2l0aE1l
c3NhZ2UsIGFuZCBjb25kaXRpb24gaXMgIiArICEhY29uZGl0aW9uKTsKKyAgICBjb25zb2xlLmFz
c2VydChjb25kaXRpb24sIG1lc3NhZ2UpOworfQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL0NNYWtlTGlzdHMudHh0IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMu
dHh0CmluZGV4IDFiNDM2N2EuLmQ3ZTllNjMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0
cy50eHQKQEAgLTI0Miw4ICsyNDIsOCBAQCBzZXQoSmF2YVNjcmlwdENvcmVfU09VUkNFUwogICAg
IGluc3BlY3Rvci9KYXZhU2NyaXB0Q2FsbEZyYW1lLmNwcAogICAgIGluc3BlY3Rvci9TY3JpcHRE
ZWJ1Z1NlcnZlci5jcHAKICAgICBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckFnZW50LmNwcAor
ICAgIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKICAgICBpbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKLSAgICBpbnNwZWN0b3IvYWdl
bnRzL0pTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcAogCiAgICAgaW50ZXJwcmV0ZXIvQWJz
dHJhY3RQQy5jcHAKICAgICBpbnRlcnByZXRlci9DYWxsRnJhbWUuY3BwCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0No
YW5nZUxvZwppbmRleCBiM2U4MDVkLi5lZTJkODEwIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cK
QEAgLTEsMyArMSw1NiBAQAorMjAxNC0wMS0yNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9A
YXBwbGUuY29tPgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IE1vdmUgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudCBpbnRvIEphdmFTY3JpcHRDb3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQu
b3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc2MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkg
KE9PUFMhKS4KKworICAgICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEdOVW1ha2Vm
aWxlLmxpc3QuYW06CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlw
dENvcmUudmN4cHJvai5maWx0ZXJzOgorICAgICAgICAqIEphdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2o6CisgICAgICAgIC0gQWRkIG5ldyBmaWxlcyB0byB0aGUgYnVpbGQu
CisgICAgICAgIC0gQWxzbywgc2luY2Ugbm9uIFJFTU9URV9JTlNQRUNUT1IgcG9ydHMgY2Fubm90
IHlldCBjb25uZWN0IHRvIGEKKyAgICAgICAgICBKU0dsb2JhbE9iamVjdCBmb3IgaW5zcGVjdGlv
biByZW1vdmUgdGhvc2UgZmlsZXMgYXMgdGhleSBkb24ndAorICAgICAgICAgIG5lZWQgdG8gYmUg
YnVpbHQuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvRXZlbnRMb29wLmNwcDogQWRkZWQuCisgICAg
ICAgIChJbnNwZWN0b3I6OkV2ZW50TG9vcDo6Y3ljbGUpOgorICAgICAgICAqIGluc3BlY3Rvci9F
dmVudExvb3AuaDogQWRkZWQuCisgICAgICAgIChJbnNwZWN0b3I6OkV2ZW50TG9vcDo6RXZlbnRM
b29wKToKKyAgICAgICAgKEluc3BlY3Rvcjo6RXZlbnRMb29wOjplbmRlZCk6CisgICAgICAgIEFk
ZCBhIEphdmFTY3JpcHRDb3JlIHZlcnNpb24gb2YgRXZlbnRMb29wLiBUaGlzIGlzIGN1cnJlbnRs
eSBvbmx5CisgICAgICAgIHVzZWQgYnkgdGhlIE1hYyBwb3J0IGZvciBKU0dsb2JhbE9iamVjdCBy
ZW1vdGUgaW5zcGVjdGlvbi4gS2VlcAorICAgICAgICB0aGUgV2ViQ29yZS9wbGF0Zm9ybSB2ZXJz
aW9uIGFsaXZlIGJlY2F1c2UgZm9yIHRoZSBNYWMgcG9ydCBpdCBkb2VzCisgICAgICAgIHNsaWdo
dGx5IGRpZmZlcmVudCB0aGluZ3MgaW52b2x2aW5nIEFwcEtpdC4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXI6OkpTR2xvYmFsT2JqZWN0
SW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIENyZWF0ZSBEZWJ1Z2dlckFnZW50IGFuZCBo
b29rIHVwIFNjcmlwdERlYnVnU2VydmVyIHdoZXJlIG5lZWRlZC4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmNwcDogQWRkZWQuCisgICAgICAg
IChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6OkpTR2xvYmFsT2Jq
ZWN0U2NyaXB0RGVidWdTZXJ2ZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVj
dFNjcmlwdERlYnVnU2VydmVyOjphZGRMaXN0ZW5lcik6CisgICAgICAgIChJbnNwZWN0b3I6OkpT
R2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6OnJlbW92ZUxpc3RlbmVyKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6cmVjb21waWxlQWxs
SlNGdW5jdGlvbnMpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdFNjcmlwdERl
YnVnU2VydmVyOjpydW5FdmVudExvb3BXaGlsZVBhdXNlZCk6CisgICAgICAgICogaW5zcGVjdG9y
L0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaDogQWRkZWQuCisgICAgICAgIFNpbXBs
ZSBpbXBsZW1lbnRhdGlvbiBvZiBTY3JpcHREZWJ1Z1NlcnZlciB3aXRoIGEgSlNHbG9iYWxPYmpl
Y3QuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuY3BwLgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5oOiBSZW5hbWVkIGZyb20gU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuaC4KKyAgICAgICAgQ29waWVkIGZyb20gV2ViQ29yZS4gQSBmZXcgbWV0
aG9kcyBuZWVkIHRvIGJlIG1hZGUgdmlydHVhbCBzbyB0aGF0IFdlYiBpbXBsZW1lbnRhdGlvbnMK
KyAgICAgICAgY2FuIG92ZXJyaWRlIGFuZCBleHRlbmQgdGhlIGZ1bmNpdG9uYWxpdHkuIEUuZy4g
c291cmNlTWFwVVJMRm9yU2NyaXB0IGFuZCBlbmFibGUvZGlzYWJsZS4KKyAgICAgICAgCisgICAg
ICAgICogaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJB
Z2VudC5oOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3REZWJ1Z2dl
ckFnZW50OjpKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQpOgorICAgICAgICAoSW5zcGVjdG9y
OjpKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ6OnN0YXJ0TGlzdGVuaW5nU2NyaXB0RGVidWdT
ZXJ2ZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ6
OnN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcik6CisgICAgICAgIChJbnNwZWN0b3I6OkpT
R2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKToKKyAgICAg
ICAgU2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIERlYnVnZ2VyQUdlbnQgd2l0aCBhIEpTR2xvYmFs
T2JqZWN0LgorCiAyMDE0LTAxLTI0ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5j
b20+CiAKICAgICAgICAgV2ViIEluc3BlY3RvcjogTW92ZSBJbnNwZWN0b3JSdW50aW1lQWdlbnQg
aW50byBKYXZhU2NyaXB0Q29yZQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0dO
VW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlz
dC5hbQppbmRleCA0ZDE2MzVlLi5kMGZkZDNhIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05V
bWFrZWZpbGUubGlzdC5hbQpAQCAtNjY1LDEwICs2NjUsMTAgQEAgamF2YXNjcmlwdGNvcmVfc291
cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9TY3JpcHREZWJ1Z1Nl
cnZlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JBZ2VudC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JBZ2VudC5jcHAgXAorCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRz
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBcCisJU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgXAogCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oIFwKIAlTb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQu
Y3BwIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9i
amVjdFJ1bnRpbWVBZ2VudC5oIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmNwcCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2ludGVycHJldGVyL0Fic3RyYWN0UEMuaCBcCiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVy
cHJldGVyL0NhY2hlZENhbGwuaCBcCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
agppbmRleCA3MmRjYTMyLi4wMzUyNGMzIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qCisrKyBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3Jl
LnZjeHByb2oKQEAgLTQ5MSw3ICs0OTEsOSBAQAogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXEphdmFTY3JpcHRDYWxsRnJhbWUuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5caW5zcGVjdG9yXFNjcmlwdERlYnVnU2VydmVyLmNwcCIgLz4KICAgICA8Q2xDb21w
aWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxhZ2VudHNcSW5zcGVjdG9yQWdlbnQuY3BwIiAvPgor
ICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXGFnZW50c1xJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3Rvclxh
Z2VudHNcSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCIgLz4KKyAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGluc3BlY3RvclxhZ2VudHNcSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcCIg
Lz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxhZ2VudHNcSlNHbG9iYWxP
YmplY3RSdW50aW1lQWdlbnQuY3BwIiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50
ZXJwcmV0ZXJcQWJzdHJhY3RQQy5jcHAiIC8+CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxp
bnRlcnByZXRlclxDYWxsRnJhbWUuY3BwIiAvPgpAQCAtMTA3MCw4ICsxMDcyLDggQEAKICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxTY3JpcHREZWJ1Z0xpc3RlbmVyLmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcU2NyaXB0RGVidWdTZXJ2ZXIu
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxhZ2VudHNcSW5zcGVj
dG9yQWdlbnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxhZ2Vu
dHNcSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caW5zcGVjdG9yXGFnZW50c1xJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCIgLz4KLSAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxhZ2VudHNcSlNHbG9iYWxPYmplY3RSdW50aW1l
QWdlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXEFic3Ry
YWN0UEMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXENhY2hl
ZENhbGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGludGVycHJldGVyXENhbGxG
cmFtZS5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRD
b3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJvai5m
aWx0ZXJzCmluZGV4IDZjNmMwOGUuLjY5ZmJjYTAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2ouZmls
dGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9K
YXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTMwMyw5ICszMDMsNiBAQAogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXGFnZW50c1xJbnNwZWN0b3JSdW50aW1lQWdl
bnQuY3BwIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBp
bGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcYWdlbnRzXEpTR2xvYmFs
T2JqZWN0UnVudGltZUFnZW50LmNwcCI+Ci0gICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVy
PgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0
ZXJcQWJzdHJhY3RQQy5jcHAiPgogICAgICAgPEZpbHRlcj5pbnRlcnByZXRlcjwvRmlsdGVyPgog
ICAgIDwvQ2xDb21waWxlPgpAQCAtMTgwNSw5ICsxODAyLDYgQEAKICAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGluc3BlY3RvclxhZ2VudHNcSW5zcGVjdG9yUnVudGltZUFnZW50LmgiPgogICAg
ICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KLSAgICA8Q2xJ
bmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxhZ2VudHNcSlNHbG9iYWxPYmplY3RSdW50aW1l
QWdlbnQuaCI+Ci0gICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgotICAgIDwvQ2xJbmNs
dWRlPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcQWJzdHJhY3RQQy5o
Ij4KICAgICAgIDxGaWx0ZXI+aW50ZXJwcmV0ZXI8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4K
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3Jl
Lnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKaW5kZXggZjU4NzM3MC4uMTY3MzM0MSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkxMCw2ICs5MTAsOCBAQAogCQlBNTAzRkEyMjE4
OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMjAxODhFRkY2ODAwMTEwRjE0IC8q
IFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlBNTAzRkEyNTE4OEVGRkZEMDAxMTBGMTQgLyogU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTUwM0ZBMjMxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmNwcCAqLzsgfTsK
IAkJQTUwM0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkEyNDE4OEVGRkZE
MDAxMTBGMTQgLyogU2NyaXB0RGVidWdTZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNTAzRkEyOTE4OEYxMDU5MDAxMTBGMTQgLyogSlNH
bG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkEyNzE4OEYxMDU5MDAxMTBGMTQgLyogSlNHbG9i
YWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5jcHAgKi87IH07CisJCUE1MDNGQTJBMTg4RjEwNTkw
MDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkEyODE4OEYxMDU5MDAxMTBG
MTQgLyogSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oICovOyB9OwogCQlBNTBFNEI2
MTE4ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MEU0QjVEMTg4MDlERDUwMDY4
QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwICovOyB9OwogCQlBNTBFNEI2MjE4ODA5
REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTBFNEI1RTE4ODA5REQ1MDA2OEE0NkQgLyog
SW5zcGVjdG9yUnVudGltZUFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTUwRTRCNjMxODgwOURENTAwNjhBNDZEIC8qIEpTR2xvYmFsT2Jq
ZWN0UnVudGltZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1MEU0QjVGMTg4MDlERDUwMDY4QTQ2RCAvKiBKU0dsb2JhbE9iamVjdFJ1bnRp
bWVBZ2VudC5jcHAgKi87IH07CkBAIC05MzgsNiArOTQwLDggQEAKIAkJQTUzMjQzOTMxODU2OTcw
OTAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5IGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUzMjQzOTAxODU2OTZFNjAwMkVE
NjkyIC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5ICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1MzI0Mzk0MTg1Njk3MDkwMDJFRDY5
MiAvKiBnZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MzI0MzkxMTg1Njk2RTYwMDJFRDY5MiAv
KiBnZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIg
LyogSW5zcGVjdG9ySlMuanNvbiBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1MzI0Mzk1MTg1NkE0NzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JKUy5qc29uICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1NDk4MjAz
MTg5MUQwQjAwMDgxRTVCOCAvKiBFdmVudExvb3AuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0OTgyMDExODkxRDBCMDAwODFFNUI4IC8qIEV2ZW50
TG9vcC5jcHAgKi87IH07CisJCUE1NDk4MjA0MTg5MUQwQjAwMDgxRTVCOCAvKiBFdmVudExvb3Au
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NDk4MjAy
MTg5MUQwQjAwMDgxRTVCOCAvKiBFdmVudExvb3AuaCAqLzsgfTsKIAkJQTU0Q0YyRjUxODRFQUIy
NDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1NENGMkYyMTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1
ZS5jcHAgKi87IH07CiAJCUE1NENGMkY2MTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0Q0YyRjMx
ODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTU0Q0YyRjkxODRFQUVEQTAwMjM3RjE5IC8qIFNj
cmlwdE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTRDRjJGNzE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmNwcCAqLzsgfTsK
QEAgLTk0NSw2ICs5NDksMTAgQEAKIAkJQTU1RDkzQTUxODUwMTJBODAwNDAwREVEIC8qIFNjcmlw
dEZ1bmN0aW9uQ2FsbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTVEOTNBMzE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNw
cCAqLzsgfTsKIAkJQTU1RDkzQTYxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2Fs
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1RDkz
QTQxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1NUQ5M0FDMTg1MTRGNzkwMDQw
MERFRCAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1RDkzQUIxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3Rv
clR5cGVCdWlsZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQTU3RDIzRTUxODkwQ0VCRjAwMzFDN0ZBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3
RDIzRTMxODkwQ0VCRjAwMzFDN0ZBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwICovOyB9
OworCQlBNTdEMjNFNjE4OTBDRUJGMDAzMUM3RkEgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RDIzRTQx
ODkwQ0VCRjAwMzFDN0ZBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNTdEMjNFOTE4OTFCMDc3MDAz
MUM3RkEgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0QyM0U3MTg5MUIwNzcwMDMxQzdGQSAv
KiBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwICovOyB9OworCQlBNTdEMjNFQTE4OTFC
MDc3MDAzMUM3RkEgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdEMjNFODE4OTFCMDc3MDAzMUM3
RkEgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmggKi87IH07CiAJCUE1N0QyM0VEMTg5
MUI1NTQwMDMxQzdGQSAvKiBSZWd1bGFyRXhwcmVzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdEMjNFQjE4OTFCNTU0MDAzMUM3RkEgLyog
UmVndWxhckV4cHJlc3Npb24uY3BwICovOyB9OwogCQlBNTdEMjNFRTE4OTFCNTU0MDAzMUM3RkEg
LyogUmVndWxhckV4cHJlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1N0QyM0VDMTg5MUI1NTQwMDMxQzdGQSAvKiBSZWd1bGFyRXhwcmVzc2lv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1
N0QyM0YxMTg5MUI1QjQwMDMxQzdGQSAvKiBDb250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0QyM0VGMTg5MUI1
QjQwMDMxQzdGQSAvKiBDb250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcCAqLzsgfTsKQEAgLTIzMTIs
NiArMjMyMCw4IEBACiAJCUE1MDNGQTIwMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHREZWJ1Z0xp
c3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdERlYnVnTGlz
dGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwM0ZBMjMxODhFRkZGRDAw
MTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNjcmlwdERlYnVnU2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTUwM0ZBMjQxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdERlYnVnU2VydmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1MDNGQTI3MTg4RjEwNTkwMDExMEYxNCAvKiBK
U0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTAzRkEyODE4OEYxMDU5MDAxMTBGMTQgLyogSlNH
bG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE1MEU0QjVEMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50
aW1lQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVj
dG9yUnVudGltZUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwRTRC
NUUxODgwOURENTAwNjhBNDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwRTRCNUYxODgwOURENTAwNjhBNDZEIC8qIEpTR2xvYmFs
T2JqZWN0UnVudGltZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIzNDUsNiArMjM1NSw4IEBACiAJCUE1MzI0MzkxMTg1Njk2RTYwMDJFRDY5MiAv
KiBnZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2Ny
aXB0LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MzI0Mzk1MTg1NkE0NzUwMDJFRDY5MiAv
KiBJbnNwZWN0b3JKUy5qc29uICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5qc29uOyBwYXRoID0gSW5zcGVjdG9y
SlMuanNvbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUzMjQzOTYxODU2QTQ3NTAw
MkVENjkyIC8qIEluc3BlY3RvckpTQmFja2VuZENvbW1hbmRzLmpzICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5qYXZhc2NyaXB0OyBwYXRoID0gSW5zcGVjdG9ySlNCYWNrZW5kQ29tbWFuZHMuanM7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NDk4MjAxMTg5MUQwQjAwMDgxRTVCOCAvKiBF
dmVudExvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXZlbnRM
b29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU0OTgyMDIxODkxRDBCMDAw
ODFFNUI4IC8qIEV2ZW50TG9vcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBF
dmVudExvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU0Q0YyRjIxODRFQUIy
NDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNjcmlwdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTU0Q0YyRjMxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1NENGMkY3MTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0T2JqZWN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzNTIsNiArMjM2NCwxMCBAQAogCQlBNTVEOTNBMzE4
NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE1NUQ5M0E0MTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5j
dGlvbkNhbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RnVuY3Rp
b25DYWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NUQ5M0FCMTg1MTRGNzkw
MDQwMERFRCAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnNwZWN0b3JUeXBlQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNTdEMjNFMzE4OTBDRUJGMDAzMUM3RkEgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU3RDIzRTQxODkw
Q0VCRjAwMzFDN0ZBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBNTdEMjNFNzE4OTFCMDc3MDAzMUM3RkEgLyogSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE1N0QyM0U4MTg5MUIwNzcwMDMxQzdGQSAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2Vy
QWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dlckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1N0QyM0VCMTg5
MUI1NTQwMDMxQzdGQSAvKiBSZWd1bGFyRXhwcmVzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBSZWd1bGFyRXhwcmVzc2lvbi5jcHA7IHBhdGggPSB5YXJyL1Jl
Z3VsYXJFeHByZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3RDIz
RUMxODkxQjU1NDAwMzFDN0ZBIC8qIFJlZ3VsYXJFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFJlZ3VsYXJFeHByZXNzaW9uLmg7IHBhdGggPSB5YXJyL1JlZ3Vs
YXJFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1N0QyM0VGMTg5
MUI1QjQwMDMxQzdGQSAvKiBDb250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDM2Niw4ICs0MzgyLDEyIEBACiAJCQljaGlsZHJl
biA9ICgKIAkJCQlBNUNFRUUxMjE4N0YzQkFEMDBFNTVDOTkgLyogSW5zcGVjdG9yQWdlbnQuY3Bw
ICovLAogCQkJCUE1Q0VFRTEzMTg3RjNCQUQwMEU1NUM5OSAvKiBJbnNwZWN0b3JBZ2VudC5oICov
LAorCQkJCUE1N0QyM0UzMTg5MENFQkYwMDMxQzdGQSAvKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcCAqLywKKwkJCQlBNTdEMjNFNDE4OTBDRUJGMDAzMUM3RkEgLyogSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5oICovLAogCQkJCUE1MEU0QjVEMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JS
dW50aW1lQWdlbnQuY3BwICovLAogCQkJCUE1MEU0QjVFMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNw
ZWN0b3JSdW50aW1lQWdlbnQuaCAqLywKKwkJCQlBNTdEMjNFNzE4OTFCMDc3MDAzMUM3RkEgLyog
SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcCAqLywKKwkJCQlBNTdEMjNFODE4OTFCMDc3
MDAzMUM3RkEgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmggKi8sCiAJCQkJQTUwRTRC
NUYxODgwOURENTAwNjhBNDZEIC8qIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcCAqLywK
IAkJCQlBNTBFNEI2MDE4ODA5REQ1MDA2OEE0NkQgLyogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdl
bnQuaCAqLywKIAkJCSk7CkBAIC00NDEwLDYgKzQ0MzAsOCBAQAogCQkJCUE1MzI0MzhFMTg1Njk2
Q0UwMDJFRDY5MiAvKiBzY3JpcHRzICovLAogCQkJCUE1N0QyM0VGMTg5MUI1QjQwMDMxQzdGQSAv
KiBDb250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcCAqLywKIAkJCQlBNTdEMjNGMDE4OTFCNUI0MDAz
MUM3RkEgLyogQ29udGVudFNlYXJjaFV0aWxpdGllcy5oICovLAorCQkJCUE1NDk4MjAxMTg5MUQw
QjAwMDgxRTVCOCAvKiBFdmVudExvb3AuY3BwICovLAorCQkJCUE1NDk4MjAyMTg5MUQwQjAwMDgx
RTVCOCAvKiBFdmVudExvb3AuaCAqLywKIAkJCQlBNTEzRTVCNTE4NUI4QkQzMDA3RTk1QUQgLyog
SW5qZWN0ZWRTY3JpcHQuY3BwICovLAogCQkJCUE1MTNFNUI2MTg1QjhCRDMwMDdFOTVBRCAvKiBJ
bmplY3RlZFNjcmlwdC5oICovLAogCQkJCUE1MTRCMkMwMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmpl
Y3RlZFNjcmlwdEJhc2UuY3BwICovLApAQCAtNDQzMyw2ICs0NDU1LDggQEAKIAkJCQlBNTkzQ0Y4
MTE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmggKi8sCiAJCQkJQTUxMDA3QkUx
ODdDQzNDNjAwQjM4ODc5IC8qIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAg
Ki8sCiAJCQkJQTUxMDA3QkYxODdDQzNDNjAwQjM4ODc5IC8qIEpTR2xvYmFsT2JqZWN0SW5zcGVj
dG9yQ29udHJvbGxlci5oICovLAorCQkJCUE1MDNGQTI3MTg4RjEwNTkwMDExMEYxNCAvKiBKU0ds
b2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmNwcCAqLywKKwkJCQlBNTAzRkEyODE4OEYxMDU5
MDAxMTBGMTQgLyogSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oICovLAogCQkJCUE1
MTNFNUJBMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdC5jcHAgKi8sCiAJ
CQkJQTUxM0U1QkIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi8s
CiAJCQkJQTUxM0U1QkMxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJv
dG90eXBlLmNwcCAqLywKQEAgLTQ2MDcsNiArNDYzMSw4IEBACiAJCQkJQkMxMTY2MDIwRTE5OTdC
NDAwODA2NkREIC8qIERhdGVJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRBMTU2MzIx
MDk2NjM2NTAwNkZBMjYwIC8qIERhdGVJbnN0YW5jZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQ0QyMDM0QzBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTUwM0ZBMUMxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFt
ZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTUwM0ZBMkExODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xv
YmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDIwM0U4
MEUxNzE4RjQwMDJDN0U4MiAvKiBEYXRlUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJQkMxOEMzRkEwRTE2RjVDRDAwQjM0NDYwIC8qIERlYnVnZ2VyLmggaW4gSGVhZGVycyAqLywK
IAkJCQlCQzMxMzU2NDBGMzAyRkEzMDAzREZEM0EgLyogRGVidWdnZXJBY3RpdmF0aW9uLmggaW4g
SGVhZGVycyAqLywKQEAgLTQ2NzUsNiArNDcwMSw3IEBACiAJCQkJQTdEODlDRkExN0EwQjhDQzAw
NzczQUQ4IC8qIERGR0ZsdXNoTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmggaW4gSGVhZGVycyAqLywK
IAkJCQk4NkVDOURDNjEzMjhERjgyMDAyQjJBRDcgLyogREZHR2VuZXJhdGlvbkluZm8uaCBpbiBI
ZWFkZXJzICovLAogCQkJCTg2RUM5REM4MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTU3RDIzRTYxODkwQ0VCRjAwMzFDN0ZBIC8qIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjE0RTIxMTgxMjU3MEIwMDlCNkI0
RCAvKiBERkdJbmxpbmVDYWNoZVdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjE0RTIz
MTgxMzA5NTUwMDlCNkI0RCAvKiBERkdJbmxpbmVDYWNoZVdyYXBwZXJJbmxpbmVzLmggaW4gSGVh
ZGVycyAqLywKIAkJCQlBNzA0RDkwNjE3QTBCQUE4MDA2QkE1NTQgLyogREZHSW5QbGFjZUFic3Ry
YWN0U3RhdGUuaCBpbiBIZWFkZXJzICovLApAQCAtNDczNSw2ICs0NzYyLDcgQEAKIAkJCQkwRkJF
MEY3NzE2QzFEQjEyMDA4MkM1RTggLyogREZHVW5pZmljYXRpb25QaGFzZS5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJMEYzNEIxNEExNkQ0MjAxMzAwMUNEQTVBIC8qIERGR1VzZUtpbmQuaCBpbiBIZWFk
ZXJzICovLAogCQkJCTBGM0IzQTJDMTU0NzUwMDIwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5oIGlu
IEhlYWRlcnMgKi8sCisJCQkJQTU3RDIzRUExODkxQjA3NzAwMzFDN0ZBIC8qIEpTR2xvYmFsT2Jq
ZWN0RGVidWdnZXJBZ2VudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQkRDNDcxNTIyODAyNTAw
Q0Q4OTEwIC8qIERGR1ZhbHVlUmVjb3ZlcnlPdmVycmlkZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJ
MEYyQkRDNDgxNTIyODAyOTAwQ0Q4OTEwIC8qIERGR1ZhbHVlU291cmNlLmggaW4gSGVhZGVycyAq
LywKIAkJCQkwRjYyMDE3NDE0M0ZDRDMzMDA2OEI3N0MgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRh
LmggaW4gSGVhZGVycyAqLywKQEAgLTQ4NTgsNiArNDg4Niw3IEBACiAJCQkJODYwQkQ4MDExNDhF
QTZGMjAwMTEyQjJGIC8qIEludHJpbnNpYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTMw
RTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThD
NDE0MEUxNkY1Q0QwMEIzNDQ2MCAvKiBKYXZhU2NyaXB0Q29yZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTU0OTgyMDQxODkxRDBCMDAwODFFNUI4IC8qIEV2ZW50TG9vcC5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJQkMxOEM0MTUwRTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4Lmgg
aW4gSGVhZGVycyAqLywKIAkJCQkxNDI5RDkzMDBFRDIyRDcwMDBCODk2MTkgLyogSklULmggaW4g
SGVhZGVycyAqLywKIAkJCQk4NkNDRUZERTBGNDEzRjg5MDBGRDdGOUUgLyogSklUQ29kZS5oIGlu
IEhlYWRlcnMgKi8sCkBAIC01ODA3LDYgKzU4MzYsNyBAQAogCQkJCTBGMzRCMTQ5MTZENDIwMTAw
MDFDREE1QSAvKiBERkdVc2VLaW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0IzQTJCMTU0
NzUwMDAwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTVE
OTNBNTE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBpbiBTb3VyY2Vz
ICovLAorCQkJCUE1MDNGQTI5MTg4RjEwNTkwMDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdFNjcmlw
dERlYnVnU2VydmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkJEQzRGMTUyMjhCRjMwMENE
ODkxMCAvKiBERkdWYWx1ZVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkREQkZCNTE2
NjZFRUQ4MDBDNTVGRUYgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5jcHAgaW4gU291cmNl
cyAqLywKIAkJCQkwRjJCREM1MTE1MjI4RkZEMDBDRDg5MTAgLyogREZHVmFyaWFibGVFdmVudC5j
cHAgaW4gU291cmNlcyAqLywKQEAgLTU4NDEsNiArNTg3MSw3IEBACiAJCQkJMEYyMzVCRDgxNzE3
OEUxQzAwNjkwQzdGIC8qIEZUTEV4aXRUaHVua0dlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQkwRjIzNUJEQTE3MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFZhbHVlLmNwcCBpbiBTb3Vy
Y2VzICovLAogCQkJCUE3RjI5OTZCMTdBMEJCNjcwMDEwNDE3QSAvKiBGVExGYWlsLmNwcCBpbiBT
b3VyY2VzICovLAorCQkJCUE1N0QyM0U1MTg5MENFQkYwMDMxQzdGQSAvKiBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGRDhBMzE5MTdENTFGMjIwMENBMkM0
MCAvKiBGVExGb3JPU1JFbnRyeUpJVENvZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyNUYx
QUYxODE2MzVGMzAwNTIyRjM5IC8qIEZUTElubGluZUNhY2hlU2l6ZS5jcHAgaW4gU291cmNlcyAq
LywKIAkJCQkwRkVBMEEyODE3MDk2MjNCMDBCQjcyMkMgLyogRlRMSW50cmluc2ljUmVwb3NpdG9y
eS5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU5MDMsNiArNTkzNCw3IEBACiAJCQkJMEZCMTRFMUUx
ODEyNEFDRTAwOUI2QjREIC8qIEpJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2Vz
ICovLAogCQkJCUJDREQ1MUVCMEZCOERGNzQwMDRBOEJEQyAvKiBKSVRPcGNvZGVzLmNwcCBpbiBT
b3VyY2VzICovLAogCQkJCUE3MTIzNkU1MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJf
NjQuY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJQTU0OTgyMDMxODkxRDBCMDAwODFFNUI4IC8qIEV2
ZW50TG9vcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkyQTRFQzkwQjE4NjBENkMyMDA5NEY3ODIg
LyogV3JpdGVCYXJyaWVyQnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjRFNTRDMTdF
RTI3NDkwMEFCQjIxNyAvKiBKSVRPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2
Q0M4NUM0MEVFN0E4OTQwMDI4ODY4MiAvKiBKSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTU5ODAsNiArNjAxMiw3IEBACiAJCQkJQTUwM0ZBMUIxODhFMEZCMDAwMTEwRjE0
IC8qIEpTSmF2YVNjcmlwdENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkUzQzYx
ODE2N0JBQkVFMDA2RDc2MEEgLyogSlNXcmFwcGVyTWFwLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MTQyODA4NzAxMDdFQzEzNDAwMTNFN0IyIC8qIEpTV3JhcHBlck9iamVjdC5jcHAgaW4gU291cmNl
cyAqLywKKwkJCQlBNTdEMjNFOTE4OTFCMDc3MDAzMUM3RkEgLyogSlNHbG9iYWxPYmplY3REZWJ1
Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDRkQ4QzkyMEVFQjJFRTcwMDI4Mzg0
OCAvKiBKdW1wVGFibGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCNTQ2NzkxNEY1QzQ2QjAw
MkMyOTg5IC8qIExhenlPcGVyYW5kVmFsdWVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CTk1QUI4MzQyMERBNDMyMjUwMEJDODNGMyAvKiBMZWdhY3lQcm9maWxlci5jcHAgaW4gU291cmNl
cyAqLywKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvRXZlbnRM
b29wLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvRXZlbnRMb29wLmNwcApu
ZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi45ZDc2YjFlCi0tLSAvZGV2L251bGwK
KysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9FdmVudExvb3AuY3BwCkBAIC0w
LDAgKzEsNjEgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmln
aHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdB
UlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQg
V0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxB
UgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElO
Qy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNU
LCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERB
TUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0Yg
U1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQ
Uk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBB
TlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBM
SUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0Up
IEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwg
RVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLwor
CisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiRXZlbnRMb29wLmgiCisKKyNpZiBPUyhX
SU5ET1dTKQorI2luY2x1ZGUgPHdpbmRvd3MuaD4KKyNlbGlmIFVTRShDRikKKyNpbmNsdWRlIDxD
b3JlRm91bmRhdGlvbi9DRlJ1bkxvb3AuaD4KKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyNpbmNsdWRl
IDxFY29yZS5oPgorI2VsaWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPGdsaWIuaD4KKyNlbmRp
ZgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKwordm9pZCBFdmVudExvb3A6OmN5Y2xlKCkKK3sK
KyNpZiBPUyhXSU5ET1dTKQorICAgIE1TRyBtc2c7CisgICAgaWYgKCFHZXRNZXNzYWdlKCZtc2cs
IDAsIDAsIDApKSB7CisgICAgICAgIG1fZW5kZWQgPSB0cnVlOworICAgICAgICByZXR1cm47Cisg
ICAgfQorICAgIFRyYW5zbGF0ZU1lc3NhZ2UoJm1zZyk7CisgICAgRGlzcGF0Y2hNZXNzYWdlKCZt
c2cpOworI2VsaWYgVVNFKENGKQorICAgIENGVGltZUludGVydmFsIHRpbWVJbnRlcnZhbCA9IDAu
MDU7CisgICAgQ0ZSdW5Mb29wUnVuSW5Nb2RlKGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSwgdGltZUlu
dGVydmFsLCB0cnVlKTsKKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBlY29yZV9tYWluX2xvb3Bf
aXRlcmF0ZSgpOworI2VsaWYgUExBVEZPUk0oR1RLKQorICAgIGdfbWFpbl9jb250ZXh0X2l0ZXJh
dGlvbihOVUxMLCBGQUxTRSk7CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9y
CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0V2ZW50TG9vcC5o
IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9FdmVudExvb3AuaApuZXcgZmlsZSBt
b2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi5hMDMyNzJjCi0tLSAvZGV2L251bGwKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9FdmVudExvb3AuaApAQCAtMCwwICsxLDUwIEBA
CisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZl
ZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZv
cm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92
aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJl
ZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJp
Z2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93
aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVz
dCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qg
b2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAg
ZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRp
c3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElO
Qy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMg
T0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBP
U0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBD
T05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRB
TCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNM
VURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUg
R09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1Ig
QlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQor
ICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBP
UiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElO
IEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURW
SVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBF
dmVudExvb3BfaAorI2RlZmluZSBFdmVudExvb3BfaAorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlh
YmxlLmg+CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBFdmVudExvb3AgeworICAg
IFdURl9NQUtFX05PTkNPUFlBQkxFKEV2ZW50TG9vcCk7CitwdWJsaWM6CisgICAgRXZlbnRMb29w
KCkKKyAgICAgICAgOiBtX2VuZGVkKGZhbHNlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGN5
Y2xlKCk7CisgICAgYm9vbCBlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kZWQ7IH0KKworcHJp
dmF0ZToKKyAgICBib29sIG1fZW5kZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IK
KworI2VuZGlmIC8vIEV2ZW50TG9vcF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJv
bGxlci5jcHAKaW5kZXggYWY1ZWViZi4uMjUwMzM5NCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3Bw
CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcApAQCAtMzYsNiArMzYsNyBAQAogI2luY2x1ZGUgIkluc3BlY3Rv
ckZyb250ZW5kQ2hhbm5lbC5oIgogI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCiAjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dERlYnVnZ2VyQWdlbnQuaCIKIAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIApAQCAtNDcsNyArNDgs
MTYgQEAgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjpKU0dsb2JhbE9iamVjdElu
c3BlY3RvckNvbnRyb2xsZXIoSlNHbG9iYWxPYmoKICAgICAsIG1faW5zcGVjdG9yRnJvbnRlbmRD
aGFubmVsKG51bGxwdHIpCiB7CiAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8
SW5zcGVjdG9yQWdlbnQ+KCkpOwotICAgIG1fYWdlbnRzLmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVl
PEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50PihtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQo
KSwgbV9nbG9iYWxPYmplY3QpKTsKKworICAgIGF1dG8gcnVudGltZUFnZW50UHRyID0gc3RkOjpt
YWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudD4obV9pbmplY3RlZFNjcmlwdE1h
bmFnZXIuZ2V0KCksIG1fZ2xvYmFsT2JqZWN0KTsKKyAgICBJbnNwZWN0b3JSdW50aW1lQWdlbnQq
IHJ1bnRpbWVBZ2VudCA9IHJ1bnRpbWVBZ2VudFB0ci5nZXQoKTsKKyAgICBtX2FnZW50cy5hcHBl
bmQoc3RkOjptb3ZlKHJ1bnRpbWVBZ2VudFB0cikpOworCisgICAgYXV0byBkZWJ1Z2dlckFnZW50
UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ+KG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBtX2dsb2JhbE9iamVjdCk7CisgICAgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGRlYnVnZ2VyQWdlbnRQdHIuZ2V0KCk7Cisg
ICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bW92ZShkZWJ1Z2dlckFnZW50UHRyKSk7CisKKyAgICBy
dW50aW1lQWdlbnQtPnNldFNjcmlwdERlYnVnU2VydmVyKCZkZWJ1Z2dlckFnZW50LT5zY3JpcHRE
ZWJ1Z1NlcnZlcigpKTsKIH0KIAogSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyOjp+
SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0
RGVidWdTZXJ2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjI1NGEy
YzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
R2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCkBAIC0wLDAgKzEsODkgQEAKKy8qCisg
KiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoK
KyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdp
dGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRo
YXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmli
dXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJv
ZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25k
aXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVu
dGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0
aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFT
IElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJD
SEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUg
RElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJV
VE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVD
SUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBP
UiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVT
UyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBM
SUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQK
KyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdB
WSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9G
IFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmln
LmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oIgorCisjaWYg
RU5BQkxFKElOU1BFQ1RPUikKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKworI2lu
Y2x1ZGUgIkV2ZW50TG9vcC5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKKworSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6SlNHbG9iYWxP
YmplY3RTY3JpcHREZWJ1Z1NlcnZlcihKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQorICAg
IDogU2NyaXB0RGVidWdTZXJ2ZXIoZmFsc2UpCisgICAgLCBtX2dsb2JhbE9iamVjdChnbG9iYWxP
YmplY3QpCit7Cit9CisKK3ZvaWQgSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6YWRk
TGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIpCit7CisgICAgaWYgKCFsaXN0
ZW5lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9vbCB3YXNFbXB0eSA9IG1fbGlzdGVuZXJz
LmlzRW1wdHkoKTsKKyAgICBtX2xpc3RlbmVycy5hZGQobGlzdGVuZXIpOworCisgICAgLy8gRmly
c3QgbGlzdGVuZXIuIEF0dGFjaCB0aGUgZGVidWdnZXIgdG8gdGhlIEpTR2xvYmFsT2JqZWN0Lgor
ICAgIGlmICh3YXNFbXB0eSkgeworICAgICAgICBhdHRhY2goJm1fZ2xvYmFsT2JqZWN0KTsKKyAg
ICAgICAgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKTsKKyAgICB9Cit9CisKK3ZvaWQgSlNHbG9i
YWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0
ZW5lciogbGlzdGVuZXIsIGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkKK3sKKyAgICBpZiAoIWxpc3Rl
bmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xpc3RlbmVycy5yZW1vdmUobGlzdGVuZXIp
OworCisgICAgLy8gTGFzdCBsaXN0ZW5lci4gRGV0YWNoIHRoZSBkZWJ1Z2dlciBmcm9tIHRoZSBK
U0dsb2JhbE9iamVjdC4KKyAgICBpZiAobV9saXN0ZW5lcnMuaXNFbXB0eSgpKSB7CisgICAgICAg
IGRldGFjaCgmbV9nbG9iYWxPYmplY3QsIGlzQmVpbmdEZXN0cm95ZWQgPyBEZWJ1Z2dlcjo6R2xv
YmFsT2JqZWN0SXNEZXN0cnVjdGluZyA6IERlYnVnZ2VyOjpUZXJtaW5hdGluZ0RlYnVnZ2luZ1Nl
c3Npb24pOworICAgICAgICBpZiAoIWlzQmVpbmdEZXN0cm95ZWQpCisgICAgICAgICAgICByZWNv
bXBpbGVBbGxKU0Z1bmN0aW9ucygpOworICAgIH0KK30KKwordm9pZCBKU0dsb2JhbE9iamVjdFNj
cmlwdERlYnVnU2VydmVyOjpyZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpCit7CisgICAgSlNDOjpE
ZWJ1Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMoJm1fZ2xvYmFsT2JqZWN0LnZtKCkpOwor
fQorCit2b2lkIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6OnJ1bkV2ZW50TG9vcFdo
aWxlUGF1c2VkKCkKK3sKKyAgICBFdmVudExvb3AgbG9vcDsKKyAgICB3aGlsZSAoIW1fZG9uZVBy
b2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cyAmJiAhbG9vcC5lbmRlZCgpKQorICAgICAgICBsb29wLmN5
Y2xlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3Jp
cHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9KU0dsb2Jh
bE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAw
MDAwMC4uMmY1MWFhMDkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuaApAQCAtMCwwICsxLDY5
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRl
ZiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyX2gKKyNkZWZpbmUgSlNHbG9iYWxPYmpl
Y3RTY3JpcHREZWJ1Z1NlcnZlcl9oCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorI2lmIEVOQUJM
RShKQVZBU0NSSVBUX0RFQlVHR0VSKQorCisjaW5jbHVkZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIK
KyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworY2xh
c3MgSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlciBmaW5hbCA6IHB1YmxpYyBTY3JpcHRE
ZWJ1Z1NlcnZlciB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNHbG9iYWxPYmplY3RTY3Jp
cHREZWJ1Z1NlcnZlcik7CitwdWJsaWM6CisgICAgSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1Nl
cnZlcihKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CisgICAgdmlydHVhbCB+SlNHbG9iYWxPYmplY3RT
Y3JpcHREZWJ1Z1NlcnZlcigpIHsgfQorCisgICAgdm9pZCBhZGRMaXN0ZW5lcihTY3JpcHREZWJ1
Z0xpc3RlbmVyKik7CisgICAgdm9pZCByZW1vdmVMaXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVy
KiwgYm9vbCBpc0JlaW5nRGVzdHJveWVkKTsKKworICAgIEpTQzo6SlNHbG9iYWxPYmplY3QmIGds
b2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xvYmFsT2JqZWN0OyB9CisKKyAgICB2aXJ0
dWFsIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKSBvdmVycmlkZTsKKworcHJpdmF0ZToK
KyAgICB2aXJ0dWFsIExpc3RlbmVyU2V0KiBnZXRMaXN0ZW5lcnNGb3JHbG9iYWxPYmplY3QoSlND
OjpKU0dsb2JhbE9iamVjdCopIG92ZXJyaWRlIHsgcmV0dXJuICZtX2xpc3RlbmVyczsgfQorICAg
IHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkpTR2xvYmFsT2JqZWN0Kikgb3ZlcnJpZGUgeyB9
CisgICAgdmlydHVhbCB2b2lkIGRpZENvbnRpbnVlKEpTQzo6SlNHbG9iYWxPYmplY3QqKSBvdmVy
cmlkZSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcnVuRXZlbnRMb29wV2hpbGVQYXVzZWQoKSBvdmVy
cmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZW50U2NyaXB0KEpTQzo6RXhlY1N0YXRlKikg
Y29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0KKworICAgIC8vIEZJWE1FOiBKYXZhU2Ny
aXB0IGluc3BlY3Rpb24gaGFzIG5vIENvbnNvbGUgeWV0LgorICAgIHZpcnR1YWwgdm9pZCByZXBv
cnRFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6OkpTVmFsdWUpIGNvbnN0IG92ZXJyaWRl
IHsgfQorCisgICAgTGlzdGVuZXJTZXQgbV9saXN0ZW5lcnM7CisgICAgSlNDOjpKU0dsb2JhbE9i
amVjdCYgbV9nbG9iYWxPYmplY3Q7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKwor
I2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorI2VuZGlmIC8vIEVOQUJMRShJ
TlNQRUNUT1IpCisKKyNlbmRpZiAvLyBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyX2gK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQuY3BwCnNpbWlsYXJpdHkgaW5kZXggODAlCnJlbmFtZSBmcm9tIFNvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApyZW5hbWUgdG8g
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5jcHAKaW5kZXggYjMxN2JkYi4uYTU0ZWM3MyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBA
IC0zMCwzMSArMzAsMjAgQEAKICNpbmNsdWRlICJjb25maWcuaCIKICNpbmNsdWRlICJJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmgiCiAKLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYg
RU5BQkxFKElOU1BFQ1RPUikKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorI2lmIEVOQUJMRShKQVZB
U0NSSVBUX0RFQlVHR0VSKQogCi0jaW5jbHVkZSAiQ2FjaGVkUmVzb3VyY2UuaCIKLSNpbmNsdWRl
ICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKLSNpbmNsdWRlICJJbnN0cnVtZW50aW5nQWdlbnRzLmgi
Ci0jaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCi0jaW5jbHVkZSAiU291bmQuaCIKLSNpbmNs
dWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KLSNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRW
YWx1ZS5oPgotI2luY2x1ZGUgPGluc3BlY3Rvci9Db250ZW50U2VhcmNoVXRpbGl0aWVzLmg+Ci0j
aW5jbHVkZSA8aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0Lmg+Ci0jaW5jbHVkZSA8aW5zcGVjdG9y
L0luamVjdGVkU2NyaXB0TWFuYWdlci5oPgotI2luY2x1ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JW
YWx1ZXMuaD4KLSNpbmNsdWRlIDxpbnNwZWN0b3IvU2NyaXB0RGVidWdTZXJ2ZXIuaD4KKyNpbmNs
dWRlICJDb250ZW50U2VhcmNoVXRpbGl0aWVzLmgiCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQu
aCIKKyNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFnZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0
b3JWYWx1ZXMuaCIKKyNpbmNsdWRlICJSZWd1bGFyRXhwcmVzc2lvbi5oIgorI2luY2x1ZGUgIlNj
cmlwdERlYnVnU2VydmVyLmgiCisjaW5jbHVkZSAiU2NyaXB0T2JqZWN0LmgiCisjaW5jbHVkZSAi
U2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvdGV4dC9XVEZTdHJpbmcuaD4KLSNpbmNsdWRl
IDx5YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmg+CiAKLXVzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OkFycmF5OwotdXNpbmcgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkZ1bmN0
aW9uRGV0YWlsczsKLXVzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpTY3Jp
cHRJZDsKLXVzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dDsKLQotdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsKLQotbmFtZXNwYWNlIFdlYkNvcmUgewor
bmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNvbnN0IGNoYXIqIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmJhY2t0cmFjZU9iamVjdEdyb3VwID0gImJhY2t0cmFjZSI7CiAKQEAgLTY0LDE0ICs1Mywx
NCBAQCBzdGF0aWMgU3RyaW5nIG9iamVjdEdyb3VwRm9yQnJlYWtwb2ludEFjdGlvbihpbnQgaWRl
bnRpZmllcikKICAgICByZXR1cm4gbWFrZVN0cmluZyhvYmplY3RHcm91cCwgU3RyaW5nOjpudW1i
ZXIoaWRlbnRpZmllcikpOwogfQogCi1JbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMsIElu
amVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQotICAgIDogSW5zcGVj
dG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRGVidWdnZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50
cykKK0luc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQoSW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIpCisgICAgOiBJbnNwZWN0b3JB
Z2VudEJhc2UoQVNDSUlMaXRlcmFsKCJEZWJ1Z2dlciIpKQogICAgICwgbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorICAgICwgbV9saXN0ZW5lcihudWxscHRy
KQogICAgICwgbV9wYXVzZWRTY3JpcHRTdGF0ZShudWxscHRyKQogICAgICwgbV9jb250aW51ZVRv
TG9jYXRpb25CcmVha3BvaW50SUQoSlNDOjpub0JyZWFrcG9pbnRJRCkKICAgICAsIG1fZW5hYmxl
ZChmYWxzZSkKICAgICAsIG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVkKGZhbHNlKQotICAgICwg
bV9saXN0ZW5lcihudWxscHRyKQogICAgICwgbV9uZXh0UHJvYmVTYW1wbGVJZCgxKQogICAgICwg
bV9uZXh0QnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXIoMSkKIHsKQEAgLTgxLDEyICs3MCwyNyBA
QCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbgogCiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojp+SW5z
cGVjdG9yRGVidWdnZXJBZ2VudCgpCiB7Ci0gICAgQVNTRVJUKCFtX2luc3RydW1lbnRpbmdBZ2Vu
dHMtPmluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKSk7Cit9CisKK3ZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckZyb250ZW5kQ2hh
bm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2Vu
ZERpc3BhdGNoZXIpCit7CisgICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5p
cXVlPEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwp
OworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JEZWJ1Z2dlckJhY2tlbmREaXNw
YXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOworfQorCit2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rv
ckRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQoreworICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0g
bnVsbHB0cjsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7CisKKyAgICBib29sIHNr
aXBSZWNvbXBpbGUgPSByZWFzb24gPT0gSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVj
dGVkVGFyZ2V0RGVzdHJveWVkOworICAgIGRpc2FibGUoc2tpcFJlY29tcGlsZSk7CiB9CiAKIHZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZW5hYmxlKCkKIHsKLSAgICBtX2luc3RydW1lbnRp
bmdBZ2VudHMtPnNldEluc3BlY3RvckRlYnVnZ2VyQWdlbnQodGhpcyk7CisgICAgaWYgKG1fZW5h
YmxlZCkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5zZXRCcmVh
a3BvaW50c0FjdGl2YXRlZCh0cnVlKTsKICAgICBzdGFydExpc3RlbmluZ1NjcmlwdERlYnVnU2Vy
dmVyKCk7CkBAIC05OSw4ICsxMDMsMTAgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpl
bmFibGUoKQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoYm9vbCBpc0Jl
aW5nRGVzdHJveWVkKQogeworICAgIGlmICghbV9lbmFibGVkKQorICAgICAgICByZXR1cm47CisK
ICAgICBtX2phdmFTY3JpcHRCcmVha3BvaW50cy5jbGVhcigpOwotICAgIG1faW5zdHJ1bWVudGlu
Z0FnZW50cy0+c2V0SW5zcGVjdG9yRGVidWdnZXJBZ2VudChudWxscHRyKTsKIAogICAgIHN0b3BM
aXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcihpc0JlaW5nRGVzdHJveWVkKTsKICAgICBjbGVhclJl
c29sdmVkQnJlYWtwb2ludFN0YXRlKCk7CkBAIC0xMTMsMzYgKzExOSwxMiBAQCB2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoYm9vbCBpc0JlaW5nRGVzdHJveWVkKQogCiB2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmVuYWJsZShFcnJvclN0cmluZyopCiB7Ci0gICAgaWYg
KG1fZW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCiAgICAgZW5hYmxlKCk7Ci0KLSAgICBBU1NF
UlQobV9mcm9udGVuZERpc3BhdGNoZXIpOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogewotICAgIGlmICghbV9lbmFibGVkKQotICAgICAg
ICByZXR1cm47Ci0KLSAgICBib29sIHNraXBSZWNvbXBpbGUgPSBmYWxzZTsKLSAgICBkaXNhYmxl
KHNraXBSZWNvbXBpbGUpOwotfQotCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENy
ZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5l
bCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERp
c3BhdGNoZXIpCi17Ci0gICAgbV9mcm9udGVuZERpc3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVl
PEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPihmcm9udGVuZENoYW5uZWwpOwot
ICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0b3JEZWJ1Z2dlckJhY2tlbmREaXNwYXRj
aGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRoaXMpOwotfQotCi12b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRp
c2Nvbm5lY3RSZWFzb24gcmVhc29uKQotewotICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVs
bHB0cjsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNsZWFyKCk7Ci0KLSAgICBib29sIHNraXBS
ZWNvbXBpbGUgPSByZWFzb24gPT0gSW5zcGVjdG9yRGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdGVk
VGFyZ2V0RGVzdHJveWVkOwotICAgIGRpc2FibGUoc2tpcFJlY29tcGlsZSk7CisgICAgZGlzYWJs
ZShmYWxzZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2lu
dHNBY3RpdmUoRXJyb3JTdHJpbmcqLCBib29sIGFjdGl2ZSkKQEAgLTE1OCwyMyArMTQwLDI0IEBA
IGJvb2wgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6aXNQYXVzZWQoKQogICAgIHJldHVybiBzY3Jp
cHREZWJ1Z1NlcnZlcigpLmlzUGF1c2VkKCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlIHNvdXJjZSwgTWVzc2FnZVR5
cGUgdHlwZSkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6aGFuZGxlQ29uc29sZUFzc2Vy
dCgpCiB7Ci0gICAgaWYgKHNjcmlwdERlYnVnU2VydmVyKCkucGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZSgpICE9IFNjcmlwdERlYnVnU2VydmVyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMgJiYgc291cmNl
ID09IENvbnNvbGVBUElNZXNzYWdlU291cmNlICYmIHR5cGUgPT0gQXNzZXJ0TWVzc2FnZVR5cGUp
CisgICAgaWYgKHNjcmlwdERlYnVnU2VydmVyKCkucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpICE9
IEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucykKICAgICAgICAgYnJlYWtQcm9n
cmFtKEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkFzc2VydCwg
bnVsbHB0cik7CiB9CiAKIHN0YXRpYyBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnVpbGRP
YmplY3RGb3JCcmVha3BvaW50Q29va2llKGNvbnN0IFN0cmluZyYgdXJsLCBpbnQgbGluZU51bWJl
ciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5nJiBjb25kaXRpb24sIFJlZlB0cjxJbnNw
ZWN0b3JBcnJheT4mIGFjdGlvbnMsIGJvb2wgaXNSZWdleCwgYm9vbCBhdXRvQ29udGludWUpCiB7
CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnJlYWtwb2ludE9iamVjdCA9IEluc3BlY3Rv
ck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgYnJlYWtwb2ludE9iamVjdC0+c2V0U3RyaW5nKCJ1cmwi
LCB1cmwpOwotICAgIGJyZWFrcG9pbnRPYmplY3QtPnNldE51bWJlcigibGluZU51bWJlciIsIGxp
bmVOdW1iZXIpOwotICAgIGJyZWFrcG9pbnRPYmplY3QtPnNldE51bWJlcigiY29sdW1uTnVtYmVy
IiwgY29sdW1uTnVtYmVyKTsKLSAgICBicmVha3BvaW50T2JqZWN0LT5zZXRTdHJpbmcoImNvbmRp
dGlvbiIsIGNvbmRpdGlvbik7Ci0gICAgYnJlYWtwb2ludE9iamVjdC0+c2V0Qm9vbGVhbigiaXNS
ZWdleCIsIGlzUmVnZXgpOwotICAgIGJyZWFrcG9pbnRPYmplY3QtPnNldEJvb2xlYW4oImF1dG9D
b250aW51ZSIsIGF1dG9Db250aW51ZSk7CisgICAgYnJlYWtwb2ludE9iamVjdC0+c2V0U3RyaW5n
KEFTQ0lJTGl0ZXJhbCgidXJsIiksIHVybCk7CisgICAgYnJlYWtwb2ludE9iamVjdC0+c2V0TnVt
YmVyKEFTQ0lJTGl0ZXJhbCgibGluZU51bWJlciIpLCBsaW5lTnVtYmVyKTsKKyAgICBicmVha3Bv
aW50T2JqZWN0LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFsKCJjb2x1bW5OdW1iZXIiKSwgY29sdW1u
TnVtYmVyKTsKKyAgICBicmVha3BvaW50T2JqZWN0LT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJj
b25kaXRpb24iKSwgY29uZGl0aW9uKTsKKyAgICBicmVha3BvaW50T2JqZWN0LT5zZXRCb29sZWFu
KEFTQ0lJTGl0ZXJhbCgiaXNSZWdleCIpLCBpc1JlZ2V4KTsKKyAgICBicmVha3BvaW50T2JqZWN0
LT5zZXRCb29sZWFuKEFTQ0lJTGl0ZXJhbCgiYXV0b0NvbnRpbnVlIiksIGF1dG9Db250aW51ZSk7
CisKICAgICBpZiAoYWN0aW9ucykKLSAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+c2V0QXJyYXko
ImFjdGlvbnMiLCBhY3Rpb25zKTsKKyAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+c2V0QXJyYXko
QVNDSUlMaXRlcmFsKCJhY3Rpb25zIiksIGFjdGlvbnMpOwogCiAgICAgcmV0dXJuIGJyZWFrcG9p
bnRPYmplY3Q7CiB9CkBAIC0yMjQsMjQgKzIwNywyNCBAQCBib29sIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKEVycm9yU3RyaW5nKiBlcnJvclN0
cgogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHZhbHVlID0gYWN0aW9ucy0+Z2V0KGkp
OwogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBvYmplY3Q7CiAgICAgICAgIGlmICgh
dmFsdWUtPmFzT2JqZWN0KCZvYmplY3QpKSB7Ci0gICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSAi
QnJlYWtwb2ludEFjdGlvbiBvZiBpbmNvcnJlY3QgdHlwZSwgZXhwZWN0ZWQgb2JqZWN0IjsKKyAg
ICAgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQnJlYWtwb2ludEFjdGlvbiBv
ZiBpbmNvcnJlY3QgdHlwZSwgZXhwZWN0ZWQgb2JqZWN0Iik7CiAgICAgICAgICAgICByZXR1cm4g
ZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICBTdHJpbmcgdHlwZVN0cmluZzsKLSAgICAgICAg
aWYgKCFvYmplY3QtPmdldFN0cmluZygidHlwZSIsICZ0eXBlU3RyaW5nKSkgewotICAgICAgICAg
ICAgKmVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnRBY3Rpb24gaGFkIHR5cGUgbWlzc2luZyI7Cisg
ICAgICAgIGlmICghb2JqZWN0LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJ0eXBlIiksICZ0eXBl
U3RyaW5nKSkgeworICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJCcmVh
a3BvaW50QWN0aW9uIGhhZCB0eXBlIG1pc3NpbmciKTsKICAgICAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICAgICAgfQogCiAgICAgICAgIFNjcmlwdEJyZWFrcG9pbnRBY3Rpb25UeXBlIHR5cGU7
CiAgICAgICAgIGlmICghYnJlYWtwb2ludEFjdGlvblR5cGVGb3JTdHJpbmcodHlwZVN0cmluZywg
JnR5cGUpKSB7Ci0gICAgICAgICAgICAqZXJyb3JTdHJpbmcgPSAiQnJlYWtwb2ludEFjdGlvbiBo
YWQgdW5rbm93biB0eXBlIjsKKyAgICAgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJh
bCgiQnJlYWtwb2ludEFjdGlvbiBoYWQgdW5rbm93biB0eXBlIik7CiAgICAgICAgICAgICByZXR1
cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICBTdHJpbmcgZGF0YTsKLSAgICAgICAgb2Jq
ZWN0LT5nZXRTdHJpbmcoImRhdGEiLCAmZGF0YSk7CisgICAgICAgIG9iamVjdC0+Z2V0U3RyaW5n
KEFTQ0lJTGl0ZXJhbCgiZGF0YSIpLCAmZGF0YSk7CiAKICAgICAgICAgcmVzdWx0LT5hcHBlbmQo
U2NyaXB0QnJlYWtwb2ludEFjdGlvbih0eXBlLCBtX25leHRCcmVha3BvaW50QWN0aW9uSWRlbnRp
ZmllcisrLCBkYXRhKSk7CiAgICAgfQpAQCAtMjUxLDkgKzIzNCw5IEBAIGJvb2wgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvbnNGcm9tUHJvdG9jb2woRXJyb3JTdHJpbmcq
IGVycm9yU3RyCiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5
VXJsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmlu
ZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkxSZWdl
eCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2Vy
OjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9y
OjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6Okxv
Y2F0aW9uPj4mIGxvY2F0aW9ucywgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5
PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uSWRlbnRp
Zmllcj4+JiBicmVha3BvaW50QWN0aW9uSWRlbnRpZmllcnMpCiB7Ci0gICAgbG9jYXRpb25zID0g
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPjo6Y3JlYXRl
KCk7CisgICAgbG9jYXRpb25zID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPjo6Y3JlYXRlKCk7CiAgICAgaWYg
KCFvcHRpb25hbFVSTCA9PSAhb3B0aW9uYWxVUkxSZWdleCkgewotICAgICAgICAqZXJyb3JTdHJp
bmcgPSAiRWl0aGVyIHVybCBvciB1cmxSZWdleCBtdXN0IGJlIHNwZWNpZmllZC4iOworICAgICAg
ICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkVpdGhlciB1cmwgb3IgdXJsUmVnZXggbXVz
dCBiZSBzcGVjaWZpZWQuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI2Myw3ICsy
NDYsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybChF
cnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBsaQogCiAgICAgU3RyaW5nIGJyZWFrcG9pbnRJ
ZGVudGlmaWVyID0gKGlzUmVnZXggPyAiLyIgKyB1cmwgKyAiLyIgOiB1cmwpICsgJzonICsgU3Ry
aW5nOjpudW1iZXIobGluZU51bWJlcikgKyAnOicgKyBTdHJpbmc6Om51bWJlcihjb2x1bW5OdW1i
ZXIpOwogICAgIGlmIChtX2phdmFTY3JpcHRCcmVha3BvaW50cy5jb250YWlucyhicmVha3BvaW50
SWRlbnRpZmllcikpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnQgYXQgc3Bl
Y2lmaWVkIGxvY2F0aW9uIGFscmVhZHkgZXhpc3RzLiI7CisgICAgICAgICplcnJvclN0cmluZyA9
IEFTQ0lJTGl0ZXJhbCgiQnJlYWtwb2ludCBhdCBzcGVjaWZpZWQgbG9jYXRpb24gYWxyZWFkeSBl
eGlzdHMuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKQEAgLTI3MSw5ICsyNTQsOSBAQCB2
b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmlu
ZyogZXJyb3JTdHJpbmcsIGludCBsaQogICAgIGJvb2wgYXV0b0NvbnRpbnVlID0gZmFsc2U7CiAg
ICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBhY3Rpb25zOwogICAgIGlmIChvcHRpb25zKSB7Ci0g
ICAgICAgICgqb3B0aW9ucyktPmdldFN0cmluZygiY29uZGl0aW9uIiwgJmNvbmRpdGlvbik7Ci0g
ICAgICAgICgqb3B0aW9ucyktPmdldEJvb2xlYW4oImF1dG9Db250aW51ZSIsICZhdXRvQ29udGlu
dWUpOwotICAgICAgICBhY3Rpb25zID0gKCpvcHRpb25zKS0+Z2V0QXJyYXkoImFjdGlvbnMiKTsK
KyAgICAgICAgKCpvcHRpb25zKS0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiY29uZGl0aW9uIiks
ICZjb25kaXRpb24pOworICAgICAgICAoKm9wdGlvbnMpLT5nZXRCb29sZWFuKEFTQ0lJTGl0ZXJh
bCgiYXV0b0NvbnRpbnVlIiksICZhdXRvQ29udGludWUpOworICAgICAgICBhY3Rpb25zID0gKCpv
cHRpb25zKS0+Z2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJhY3Rpb25zIikpOwogICAgIH0KIAogICAg
IFZlY3RvcjxTY3JpcHRCcmVha3BvaW50QWN0aW9uPiBicmVha3BvaW50QWN0aW9uczsKQEAgLTMw
MiwxNSArMjg1LDE1IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2lu
dEJ5VXJsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50IGxpCiBzdGF0aWMgYm9vbCBwYXJz
ZUxvY2F0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgSW5zcGVjdG9yT2JqZWN0KiBsb2Nh
dGlvbiwgSlNDOjpTb3VyY2VJRCogc291cmNlSUQsIHVuc2lnbmVkKiBsaW5lTnVtYmVyLCB1bnNp
Z25lZCogY29sdW1uTnVtYmVyKQogewogICAgIFN0cmluZyBzY3JpcHRJRFN0cjsKLSAgICBpZiAo
IWxvY2F0aW9uLT5nZXRTdHJpbmcoInNjcmlwdElkIiwgJnNjcmlwdElEU3RyKSB8fCAhbG9jYXRp
b24tPmdldE51bWJlcigibGluZU51bWJlciIsIGxpbmVOdW1iZXIpKSB7Ci0gICAgICAgIC8vIEZJ
WE1FOiByZXBsYWNlIHdpdGggaW5wdXQgdmFsaWRhdGlvbi4KKyAgICBpZiAoIWxvY2F0aW9uLT5n
ZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JpcHRJZCIpLCAmc2NyaXB0SURTdHIpIHx8ICFsb2Nh
dGlvbi0+Z2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgibGluZU51bWJlciIpLCBsaW5lTnVtYmVyKSkg
ewogICAgICAgICAqc291cmNlSUQgPSBKU0M6Om5vU291cmNlSUQ7Ci0gICAgICAgICplcnJvclN0
cmluZyA9ICJzY3JpcHRJZCBhbmQgbGluZU51bWJlciBhcmUgcmVxdWlyZWQuIjsKKyAgICAgICAg
KmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJzY3JpcHRJZCBhbmQgbGluZU51bWJlciBhcmUg
cmVxdWlyZWQuIik7CiAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICB9CisKICAgICAqc291cmNl
SUQgPSBzY3JpcHRJRFN0ci50b0ludFB0cigpOwogICAgICpjb2x1bW5OdW1iZXIgPSAwOwotICAg
IGxvY2F0aW9uLT5nZXROdW1iZXIoImNvbHVtbk51bWJlciIsIGNvbHVtbk51bWJlcik7CisgICAg
bG9jYXRpb24tPmdldE51bWJlcihBU0NJSUxpdGVyYWwoImNvbHVtbk51bWJlciIpLCBjb2x1bW5O
dW1iZXIpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC0zMTksNyArMzAyLDYgQEAgdm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZywgY29uc3QgUmVmUHQKICAgICBKU0M6OlNvdXJjZUlEIHNvdXJjZUlEOwogICAgIHVuc2ln
bmVkIGxpbmVOdW1iZXI7CiAgICAgdW5zaWduZWQgY29sdW1uTnVtYmVyOwotCiAgICAgaWYgKCFw
YXJzZUxvY2F0aW9uKGVycm9yU3RyaW5nLCBsb2NhdGlvbi5nZXQoKSwgJnNvdXJjZUlELCAmbGlu
ZU51bWJlciwgJmNvbHVtbk51bWJlcikpCiAgICAgICAgIHJldHVybjsKIApAQCAtMzI3LDMxICsz
MDksMzMgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50KEVycm9y
U3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHQKICAgICBib29sIGF1dG9Db250aW51ZSA9
IGZhbHNlOwogICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4gYWN0aW9uczsKICAgICBpZiAob3B0
aW9ucykgewotICAgICAgICAoKm9wdGlvbnMpLT5nZXRTdHJpbmcoImNvbmRpdGlvbiIsICZjb25k
aXRpb24pOwotICAgICAgICAoKm9wdGlvbnMpLT5nZXRCb29sZWFuKCJhdXRvQ29udGludWUiLCAm
YXV0b0NvbnRpbnVlKTsKLSAgICAgICAgYWN0aW9ucyA9ICgqb3B0aW9ucyktPmdldEFycmF5KCJh
Y3Rpb25zIik7CisgICAgICAgICgqb3B0aW9ucyktPmdldFN0cmluZyhBU0NJSUxpdGVyYWwoImNv
bmRpdGlvbiIpLCAmY29uZGl0aW9uKTsKKyAgICAgICAgKCpvcHRpb25zKS0+Z2V0Qm9vbGVhbihB
U0NJSUxpdGVyYWwoImF1dG9Db250aW51ZSIpLCAmYXV0b0NvbnRpbnVlKTsKKyAgICAgICAgYWN0
aW9ucyA9ICgqb3B0aW9ucyktPmdldEFycmF5KEFTQ0lJTGl0ZXJhbCgiYWN0aW9ucyIpKTsKICAg
ICB9CiAKICAgICBWZWN0b3I8U2NyaXB0QnJlYWtwb2ludEFjdGlvbj4gYnJlYWtwb2ludEFjdGlv
bnM7CiAgICAgaWYgKCFicmVha3BvaW50QWN0aW9uc0Zyb21Qcm90b2NvbChlcnJvclN0cmluZywg
YWN0aW9ucywgJmJyZWFrcG9pbnRBY3Rpb25zKSkKICAgICAgICAgcmV0dXJuOwotICAgIAorCiAg
ICAgYnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXJzID0gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb25J
ZGVudGlmaWVyPjo6Y3JlYXRlKCk7CiAgICAgZm9yIChTY3JpcHRCcmVha3BvaW50QWN0aW9uJiBh
Y3Rpb24gOiBicmVha3BvaW50QWN0aW9ucykKICAgICAgICAgYnJlYWtwb2ludEFjdGlvbklkZW50
aWZpZXJzLT5hZGRJdGVtKGFjdGlvbi5pZGVudGlmaWVyKTsKIAogICAgIFN0cmluZyBicmVha3Bv
aW50SWRlbnRpZmllciA9IFN0cmluZzo6bnVtYmVyKHNvdXJjZUlEKSArICc6JyArIFN0cmluZzo6
bnVtYmVyKGxpbmVOdW1iZXIpICsgJzonICsgU3RyaW5nOjpudW1iZXIoY29sdW1uTnVtYmVyKTsK
ICAgICBpZiAobV9icmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURz
LmZpbmQoYnJlYWtwb2ludElkZW50aWZpZXIpICE9IG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0Rl
YnVnU2VydmVyQnJlYWtwb2ludElEcy5lbmQoKSkgewotICAgICAgICAqZXJyb3JTdHJpbmcgPSAi
QnJlYWtwb2ludCBhdCBzcGVjaWZpZWQgbG9jYXRpb24gYWxyZWFkeSBleGlzdHMuIjsKKyAgICAg
ICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJCcmVha3BvaW50IGF0IHNwZWNpZmllZCBs
b2NhdGlvbiBhbHJlYWR5IGV4aXN0cy4iKTsKICAgICAgICAgcmV0dXJuOwogICAgIH0KIAogICAg
IFNjcmlwdEJyZWFrcG9pbnQgYnJlYWtwb2ludChsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNv
bmRpdGlvbiwgYnJlYWtwb2ludEFjdGlvbnMsIGF1dG9Db250aW51ZSk7CiAgICAgYWN0dWFsTG9j
YXRpb24gPSByZXNvbHZlQnJlYWtwb2ludChicmVha3BvaW50SWRlbnRpZmllciwgc291cmNlSUQs
IGJyZWFrcG9pbnQpOwotICAgIGlmIChhY3R1YWxMb2NhdGlvbikKLSAgICAgICAgKm91dEJyZWFr
cG9pbnRJZGVudGlmaWVyID0gYnJlYWtwb2ludElkZW50aWZpZXI7Ci0gICAgZWxzZQotICAgICAg
ICAqZXJyb3JTdHJpbmcgPSAiQ291bGQgbm90IHJlc29sdmUgYnJlYWtwb2ludCI7CisgICAgaWYg
KCFhY3R1YWxMb2NhdGlvbikgeworICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwo
IkNvdWxkIG5vdCByZXNvbHZlIGJyZWFrcG9pbnQiKTsKKyAgICAgICAgcmV0dXJuOworICAgIH0K
KworICAgICpvdXRCcmVha3BvaW50SWRlbnRpZmllciA9IGJyZWFrcG9pbnRJZGVudGlmaWVyOwog
fQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlbW92ZUJyZWFrcG9pbnQoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyKQpAQCAtMzc4LDcgKzM2
Miw2IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y29udGludWVUb0xvY2F0aW9uKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QKICAgICBKU0M6OlNvdXJjZUlEIHNvdXJjZUlE
OwogICAgIHVuc2lnbmVkIGxpbmVOdW1iZXI7CiAgICAgdW5zaWduZWQgY29sdW1uTnVtYmVyOwot
CiAgICAgaWYgKCFwYXJzZUxvY2F0aW9uKGVycm9yU3RyaW5nLCBsb2NhdGlvbi5nZXQoKSwgJnNv
dXJjZUlELCAmbGluZU51bWJlciwgJmNvbHVtbk51bWJlcikpCiAgICAgICAgIHJldHVybjsKIApA
QCAtNDE0LDcgKzM5Nyw3IEBAIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVi
dWdnZXI6OkxvY2F0aW9uPiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyCiAgICAgcmV0dXJuIGxv
Y2F0aW9uOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNlYXJjaEluQ29udGVu
dChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmluZyYgc2NyaXB0SURTdHIsIGNvbnN0IFN0
cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29u
c3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8QXJyYXk8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRjaD4+JiByZXN1bHRzKQordm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcqIGVycm9y
LCBjb25zdCBTdHJpbmcmIHNjcmlwdElEU3RyLCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBi
b29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlv
bmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYgcmVzdWx0cykKIHsK
ICAgICBib29sIGlzUmVnZXggPSBvcHRpb25hbElzUmVnZXggPyAqb3B0aW9uYWxJc1JlZ2V4IDog
ZmFsc2U7CiAgICAgYm9vbCBjYXNlU2Vuc2l0aXZlID0gb3B0aW9uYWxDYXNlU2Vuc2l0aXZlID8g
Km9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSA6IGZhbHNlOwpAQCAtNDQxLDkgKzQyNCwxMCBAQCB2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyog
ZXJyb3JTdHJpbmcsIGNvbnN0CiB7CiAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQg
PSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3JPYmplY3RJZChmdW5j
dGlvbklkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7Ci0gICAgICAg
ICplcnJvclN0cmluZyA9ICJGdW5jdGlvbiBvYmplY3QgaWQgaXMgb2Jzb2xldGUiOworICAgICAg
ICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkZ1bmN0aW9uIG9iamVjdCBpZCBpcyBvYnNv
bGV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQorCiAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0
RnVuY3Rpb25EZXRhaWxzKGVycm9yU3RyaW5nLCBmdW5jdGlvbklkLCAmZGV0YWlscyk7CiB9CiAK
QEAgLTQ1MSw2ICs0MzUsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNjaGVkdWxl
UGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yRGVidWdnZXJGcm9udAogewogICAgIGlmICht
X2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZCkKICAgICAgICAgcmV0dXJuOworCiAgICAgbV9icmVh
a1JlYXNvbiA9IGJyZWFrUmVhc29uOwogICAgIG1fYnJlYWtBdXhEYXRhID0gZGF0YTsKICAgICBz
Y3JpcHREZWJ1Z1NlcnZlcigpLnNldFBhdXNlT25OZXh0U3RhdGVtZW50KHRydWUpOwpAQCAtNDYw
LDYgKzQ0NSw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6Y2FuY2VsUGF1c2VPbk5l
eHRTdGF0ZW1lbnQoKQogewogICAgIGlmIChtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZCkKICAg
ICAgICAgcmV0dXJuOworCiAgICAgY2xlYXJCcmVha0RldGFpbHMoKTsKICAgICBzY3JpcHREZWJ1
Z1NlcnZlcigpLnNldFBhdXNlT25OZXh0U3RhdGVtZW50KGZhbHNlKTsKIH0KQEAgLTQ2OCw2ICs0
NTQsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnBhdXNlKEVycm9yU3RyaW5nKikK
IHsKICAgICBpZiAobV9qYXZhU2NyaXB0UGF1c2VTY2hlZHVsZWQpCiAgICAgICAgIHJldHVybjsK
KwogICAgIGNsZWFyQnJlYWtEZXRhaWxzKCk7CiAgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5zZXRQ
YXVzZU9uTmV4dFN0YXRlbWVudCh0cnVlKTsKICAgICBtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxl
ZCA9IHRydWU7CkBAIC00NzcsNiArNDY0LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpyZXN1bWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nKQogewogICAgIGlmICghYXNzZXJ0UGF1
c2VkKGVycm9yU3RyaW5nKSkKICAgICAgICAgcmV0dXJuOworCiAgICAgbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXItPnJlbGVhc2VPYmplY3RHcm91cChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpiYWNr
dHJhY2VPYmplY3RHcm91cCk7CiAgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5jb250aW51ZVByb2dy
YW0oKTsKIH0KQEAgLTQ4NSw2ICs0NzMsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OnN0ZXBPdmVyKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZykKIHsKICAgICBpZiAoIWFzc2VydFBh
dXNlZChlcnJvclN0cmluZykpCiAgICAgICAgIHJldHVybjsKKwogICAgIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLT5yZWxlYXNlT2JqZWN0R3JvdXAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YmFj
a3RyYWNlT2JqZWN0R3JvdXApOwogICAgIHNjcmlwdERlYnVnU2VydmVyKCkuc3RlcE92ZXJTdGF0
ZW1lbnQoKTsKIH0KQEAgLTQ5Myw2ICs0ODIsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OnN0ZXBJbnRvKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZykKIHsKICAgICBpZiAoIWFzc2Vy
dFBhdXNlZChlcnJvclN0cmluZykpCiAgICAgICAgIHJldHVybjsKKwogICAgIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyLT5yZWxlYXNlT2JqZWN0R3JvdXAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
YmFja3RyYWNlT2JqZWN0R3JvdXApOwogICAgIHNjcmlwdERlYnVnU2VydmVyKCkuc3RlcEludG9T
dGF0ZW1lbnQoKTsKICAgICBtX2xpc3RlbmVyLT5zdGVwSW50bygpOwpAQCAtNTAyLDQxICs0OTIs
NDIgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzdGVwT3V0KEVycm9yU3RyaW5nKiBl
cnJvclN0cmluZykKIHsKICAgICBpZiAoIWFzc2VydFBhdXNlZChlcnJvclN0cmluZykpCiAgICAg
ICAgIHJldHVybjsKKwogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5yZWxlYXNlT2JqZWN0
R3JvdXAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YmFja3RyYWNlT2JqZWN0R3JvdXApOwogICAg
IHNjcmlwdERlYnVnU2VydmVyKCkuc3RlcE91dE9mRnVuY3Rpb24oKTsKIH0KIAogdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVzZU9uRXhjZXB0aW9ucyhFcnJvclN0cmluZyogZXJy
b3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3RyaW5nUGF1c2VTdGF0ZSkKIHsKLSAgICBTY3JpcHRE
ZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBwYXVzZVN0YXRlOworICAgIEpTQzo6
RGVidWdnZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUgcGF1c2VTdGF0ZTsKICAgICBpZiAoc3Ry
aW5nUGF1c2VTdGF0ZSA9PSAibm9uZSIpCi0gICAgICAgIHBhdXNlU3RhdGUgPSBTY3JpcHREZWJ1
Z1NlcnZlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zOworICAgICAgICBwYXVzZVN0YXRlID0gSlND
OjpEZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zOwogICAgIGVsc2UgaWYgKHN0cmluZ1Bh
dXNlU3RhdGUgPT0gImFsbCIpCi0gICAgICAgIHBhdXNlU3RhdGUgPSBTY3JpcHREZWJ1Z1NlcnZl
cjo6UGF1c2VPbkFsbEV4Y2VwdGlvbnM7CisgICAgICAgIHBhdXNlU3RhdGUgPSBKU0M6OkRlYnVn
Z2VyOjpQYXVzZU9uQWxsRXhjZXB0aW9uczsKICAgICBlbHNlIGlmIChzdHJpbmdQYXVzZVN0YXRl
ID09ICJ1bmNhdWdodCIpCi0gICAgICAgIHBhdXNlU3RhdGUgPSBTY3JpcHREZWJ1Z1NlcnZlcjo6
UGF1c2VPblVuY2F1Z2h0RXhjZXB0aW9uczsKKyAgICAgICAgcGF1c2VTdGF0ZSA9IEpTQzo6RGVi
dWdnZXI6OlBhdXNlT25VbmNhdWdodEV4Y2VwdGlvbnM7CiAgICAgZWxzZSB7CiAgICAgICAgICpl
cnJvclN0cmluZyA9ICJVbmtub3duIHBhdXNlIG9uIGV4Y2VwdGlvbnMgbW9kZTogIiArIHN0cmlu
Z1BhdXNlU3RhdGU7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBzY3JpcHREZWJ1Z1Nl
cnZlcigpLnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoc3RhdGljX2Nhc3Q8U2NyaXB0RGVidWdT
ZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGU+KHBhdXNlU3RhdGUpKTsKKyAgICBzY3JpcHRE
ZWJ1Z1NlcnZlcigpLnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUoc3RhdGljX2Nhc3Q8SlNDOjpE
ZWJ1Z2dlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZT4ocGF1c2VTdGF0ZSkpOwogICAgIGlmIChz
Y3JpcHREZWJ1Z1NlcnZlcigpLnBhdXNlT25FeGNlcHRpb25zU3RhdGUoKSAhPSBwYXVzZVN0YXRl
KQotICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJuYWwgZXJyb3IuIENvdWxkIG5vdCBjaGFu
Z2UgcGF1c2Ugb24gZXhjZXB0aW9ucyBzdGF0ZSI7CisgICAgICAgICplcnJvclN0cmluZyA9IEFT
Q0lJTGl0ZXJhbCgiSW50ZXJuYWwgZXJyb3IuIENvdWxkIG5vdCBjaGFuZ2UgcGF1c2Ugb24gZXhj
ZXB0aW9ucyBzdGF0ZSIpOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmV2YWx1
YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGNh
bGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogY29uc3Qg
b2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGNvbnN0IGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29u
c3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25z
dCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcs
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiBy
ZXN1bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3du
KQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQoY2FsbEZyYW1lSWQpOwogICAgIGlm
IChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0g
Ikluc3BlY3RlZCBmcmFtZSBoYXMgZ29uZSI7CisgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJ
TGl0ZXJhbCgiSW5zcGVjdGVkIGZyYW1lIGhhcyBnb25lIik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSBwcmV2
aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBzY3JpcHREZWJ1Z1NlcnZlcigpLnBhdXNlT25F
eGNlcHRpb25zU3RhdGUoKTsKKyAgICBKU0M6OkRlYnVnZ2VyOjpQYXVzZU9uRXhjZXB0aW9uc1N0
YXRlIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSA9IHNjcmlwdERlYnVnU2VydmVyKCku
cGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpOwogICAgIGlmIChkb05vdFBhdXNlT25FeGNlcHRpb25z
QW5kTXV0ZUNvbnNvbGUgPyAqZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlIDog
ZmFsc2UpIHsKLSAgICAgICAgaWYgKHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSAhPSBT
Y3JpcHREZWJ1Z1NlcnZlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zKQotICAgICAgICAgICAgc2Ny
aXB0RGVidWdTZXJ2ZXIoKS5zZXRQYXVzZU9uRXhjZXB0aW9uc1N0YXRlKFNjcmlwdERlYnVnU2Vy
dmVyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpOworICAgICAgICBpZiAocHJldmlvdXNQYXVzZU9u
RXhjZXB0aW9uc1N0YXRlICE9IEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucykK
KyAgICAgICAgICAgIHNjcmlwdERlYnVnU2VydmVyKCkuc2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZShKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpOwogICAgICAgICBtdXRlQ29u
c29sZSgpOwogICAgIH0KIApAQCAtNTU1LDU0ICs1NDYsMzcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50OjpzZXRPdmVybGF5TWVzc2FnZShFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyop
CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2NyaXB0RXhlY3V0aW9uQmxvY2tlZEJ5
Q1NQKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCkKIHsKLSAgICBpZiAoc2NyaXB0RGVidWdT
ZXJ2ZXIoKS5wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKCkgIT0gU2NyaXB0RGVidWdTZXJ2ZXI6OkRv
bnRQYXVzZU9uRXhjZXB0aW9ucykgeworICAgIGlmIChzY3JpcHREZWJ1Z1NlcnZlcigpLnBhdXNl
T25FeGNlcHRpb25zU3RhdGUoKSAhPSBKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VPbkV4Y2VwdGlv
bnMpIHsKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGlyZWN0aXZlID0gSW5zcGVj
dG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgZGlyZWN0aXZlLT5zZXRTdHJpbmcoImRpcmVj
dGl2ZVRleHQiLCBkaXJlY3RpdmVUZXh0KTsKKyAgICAgICAgZGlyZWN0aXZlLT5zZXRTdHJpbmco
QVNDSUlMaXRlcmFsKCJkaXJlY3RpdmVUZXh0IiksIGRpcmVjdGl2ZVRleHQpOwogICAgICAgICBi
cmVha1Byb2dyYW0oSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6
Q1NQVmlvbGF0aW9uLCBkaXJlY3RpdmUucmVsZWFzZSgpKTsKICAgICB9CiB9CiAKLVBhc3NSZWZQ
dHI8QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmN1cnJlbnRDYWxsRnJhbWVzKCkKK1Bhc3NSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdn
ZXI6OkNhbGxGcmFtZT4+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmN1cnJlbnRDYWxsRnJhbWVz
KCkKIHsKICAgICBpZiAoIW1fcGF1c2VkU2NyaXB0U3RhdGUpCi0gICAgICAgIHJldHVybiBBcnJh
eTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7
CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CisKICAgICBJbmpl
Y3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmpl
Y3RlZFNjcmlwdEZvcihtX3BhdXNlZFNjcmlwdFN0YXRlKTsKICAgICBpZiAoaW5qZWN0ZWRTY3Jp
cHQuaGFzTm9WYWx1ZSgpKSB7CiAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwotICAgICAg
ICByZXR1cm4gQXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFt
ZT46OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJy
YXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgp
OwogICAgIH0KKwogICAgIHJldHVybiBpbmplY3RlZFNjcmlwdC53cmFwQ2FsbEZyYW1lcyhtX2N1
cnJlbnRDYWxsU3RhY2spOwogfQogCiBTdHJpbmcgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c291
cmNlTWFwVVJMRm9yU2NyaXB0KGNvbnN0IFNjcmlwdCYgc2NyaXB0KQogewotICAgIERFRklORV9T
VEFUSUNfTE9DQUwoU3RyaW5nLCBzb3VyY2VNYXBIVFRQSGVhZGVyLCAoQVNDSUlMaXRlcmFsKCJT
b3VyY2VNYXAiKSkpOwotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzb3VyY2VNYXBI
VFRQSGVhZGVyRGVwcmVjYXRlZCwgKEFTQ0lJTGl0ZXJhbCgiWC1Tb3VyY2VNYXAiKSkpOwotCi0g
ICAgaWYgKCFzY3JpcHQudXJsLmlzRW1wdHkoKSkgewotICAgICAgICBpZiAoSW5zcGVjdG9yUGFn
ZUFnZW50KiBwYWdlQWdlbnQgPSBtX2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvclBhZ2VB
Z2VudCgpKSB7Ci0gICAgICAgICAgICBDYWNoZWRSZXNvdXJjZSogcmVzb3VyY2UgPSBwYWdlQWdl
bnQtPmNhY2hlZFJlc291cmNlKHBhZ2VBZ2VudC0+bWFpbkZyYW1lKCksIFVSTChQYXJzZWRVUkxT
dHJpbmcsIHNjcmlwdC51cmwpKTsKLSAgICAgICAgICAgIGlmIChyZXNvdXJjZSkgewotICAgICAg
ICAgICAgICAgIFN0cmluZyBzb3VyY2VNYXBIZWFkZXIgPSByZXNvdXJjZS0+cmVzcG9uc2UoKS5o
dHRwSGVhZGVyRmllbGQoc291cmNlTWFwSFRUUEhlYWRlcik7Ci0gICAgICAgICAgICAgICAgaWYg
KCFzb3VyY2VNYXBIZWFkZXIuaXNFbXB0eSgpKQotICAgICAgICAgICAgICAgICAgICByZXR1cm4g
c291cmNlTWFwSGVhZGVyOwotCi0gICAgICAgICAgICAgICAgc291cmNlTWFwSGVhZGVyID0gcmVz
b3VyY2UtPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKHNvdXJjZU1hcEhUVFBIZWFkZXJEZXBy
ZWNhdGVkKTsKLSAgICAgICAgICAgICAgICBpZiAoIXNvdXJjZU1hcEhlYWRlci5pc0VtcHR5KCkp
Ci0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzb3VyY2VNYXBIZWFkZXI7Ci0gICAgICAgICAg
ICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICByZXR1cm4gQ29udGVudFNlYXJjaFV0aWxpdGll
czo6ZmluZFNjcmlwdFNvdXJjZU1hcFVSTChzY3JpcHQuc291cmNlKTsKIH0KIAotLy8gSmF2YVNj
cmlwdERlYnVnTGlzdGVuZXIgZnVuY3Rpb25zCi0KIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6ZGlkUGFyc2VTb3VyY2UoSlNDOjpTb3VyY2VJRCBzb3VyY2VJRCwgY29uc3QgU2NyaXB0JiBp
blNjcmlwdCkKIHsKICAgICBTY3JpcHQgc2NyaXB0ID0gaW5TY3JpcHQ7Ci0gICAgaWYgKCFzY3Jp
cHQuc3RhcnRMaW5lICYmICFzY3JpcHQuc3RhcnRDb2x1bW4pCisgICAgLy8gRklYTUU6IFdoeSBk
b2VzIC1bSlNDb250ZXh0IGV2YWx1YXRlU2NyaXB0XSBoYXZlIGEgLTEgc3RhcnRMaW5lPworICAg
IGlmIChzY3JpcHQuc3RhcnRMaW5lIDw9IDAgJiYgIXNjcmlwdC5zdGFydENvbHVtbikKICAgICAg
ICAgc2NyaXB0LnNvdXJjZVVSTCA9IENvbnRlbnRTZWFyY2hVdGlsaXRpZXM6OmZpbmRTY3JpcHRT
b3VyY2VVUkwoc2NyaXB0LnNvdXJjZSk7CiAgICAgc2NyaXB0LnNvdXJjZU1hcHBpbmdVUkwgPSBz
b3VyY2VNYXBVUkxGb3JTY3JpcHQoc2NyaXB0KTsKIApAQCAtNjIyLDE4ICs1OTYsMTggQEAgdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJzZVNvdXJjZShKU0M6OlNvdXJjZUlEIHNv
dXJjZUlELCBjb25zdCBTY3JpcHQKICAgICBmb3IgKGF1dG8gaXQgPSBtX2phdmFTY3JpcHRCcmVh
a3BvaW50cy5iZWdpbigpLCBlbmQgPSBtX2phdmFTY3JpcHRCcmVha3BvaW50cy5lbmQoKTsgaXQg
IT0gZW5kOyArK2l0KSB7CiAgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGJyZWFrcG9p
bnRPYmplY3QgPSBpdC0+dmFsdWUtPmFzT2JqZWN0KCk7CiAgICAgICAgIGJvb2wgaXNSZWdleDsK
LSAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0Qm9vbGVhbigiaXNSZWdleCIsICZpc1JlZ2V4
KTsKKyAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0Qm9vbGVhbihBU0NJSUxpdGVyYWwoImlz
UmVnZXgiKSwgJmlzUmVnZXgpOwogICAgICAgICBTdHJpbmcgdXJsOwotICAgICAgICBicmVha3Bv
aW50T2JqZWN0LT5nZXRTdHJpbmcoInVybCIsICZ1cmwpOworICAgICAgICBicmVha3BvaW50T2Jq
ZWN0LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJ1cmwiKSwgJnVybCk7CiAgICAgICAgIGlmICgh
bWF0Y2hlcyhzY3JpcHRVUkwsIHVybCwgaXNSZWdleCkpCiAgICAgICAgICAgICBjb250aW51ZTsK
ICAgICAgICAgU2NyaXB0QnJlYWtwb2ludCBicmVha3BvaW50OwotICAgICAgICBicmVha3BvaW50
T2JqZWN0LT5nZXROdW1iZXIoImxpbmVOdW1iZXIiLCAmYnJlYWtwb2ludC5saW5lTnVtYmVyKTsK
LSAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0TnVtYmVyKCJjb2x1bW5OdW1iZXIiLCAmYnJl
YWtwb2ludC5jb2x1bW5OdW1iZXIpOwotICAgICAgICBicmVha3BvaW50T2JqZWN0LT5nZXRTdHJp
bmcoImNvbmRpdGlvbiIsICZicmVha3BvaW50LmNvbmRpdGlvbik7Ci0gICAgICAgIGJyZWFrcG9p
bnRPYmplY3QtPmdldEJvb2xlYW4oImF1dG9Db250aW51ZSIsICZicmVha3BvaW50LmF1dG9Db250
aW51ZSk7CisgICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPmdldE51bWJlcihBU0NJSUxpdGVyYWwo
ImxpbmVOdW1iZXIiKSwgJmJyZWFrcG9pbnQubGluZU51bWJlcik7CisgICAgICAgIGJyZWFrcG9p
bnRPYmplY3QtPmdldE51bWJlcihBU0NJSUxpdGVyYWwoImNvbHVtbk51bWJlciIpLCAmYnJlYWtw
b2ludC5jb2x1bW5OdW1iZXIpOworICAgICAgICBicmVha3BvaW50T2JqZWN0LT5nZXRTdHJpbmco
QVNDSUlMaXRlcmFsKCJjb25kaXRpb24iKSwgJmJyZWFrcG9pbnQuY29uZGl0aW9uKTsKKyAgICAg
ICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0Qm9vbGVhbihBU0NJSUxpdGVyYWwoImF1dG9Db250aW51
ZSIpLCAmYnJlYWtwb2ludC5hdXRvQ29udGludWUpOwogICAgICAgICBFcnJvclN0cmluZyBlcnJv
clN0cmluZzsKLSAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBhY3Rpb25zID0gYnJlYWtw
b2ludE9iamVjdC0+Z2V0QXJyYXkoImFjdGlvbnMiKTsKKyAgICAgICAgUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiBhY3Rpb25zID0gYnJlYWtwb2ludE9iamVjdC0+Z2V0QXJyYXkoQVNDSUlMaXRlcmFs
KCJhY3Rpb25zIikpOwogICAgICAgICBpZiAoIWJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29s
KCZlcnJvclN0cmluZywgYWN0aW9ucywgJmJyZWFrcG9pbnQuYWN0aW9ucykpIHsKICAgICAgICAg
ICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAgICAgICAgY29udGludWU7CkBAIC02NjAs
NyArNjM0LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShKU0M6OkV4
ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IERlcHJlY2EKICAgICAgICAgSW5qZWN0ZWRTY3Jp
cHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRTY3Jp
cHRGb3Ioc2NyaXB0U3RhdGUpOwogICAgICAgICBpZiAoIWluamVjdGVkU2NyaXB0Lmhhc05vVmFs
dWUoKSkgewogICAgICAgICAgICAgbV9icmVha1JlYXNvbiA9IEluc3BlY3RvckRlYnVnZ2VyRnJv
bnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkV4Y2VwdGlvbjsKLSAgICAgICAgICAgIG1fYnJlYWtB
dXhEYXRhID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVjdChleGNlcHRpb24sICJiYWNrdHJhY2Ui
KS0+b3BlbkFjY2Vzc29ycygpOworICAgICAgICAgICAgbV9icmVha0F1eERhdGEgPSBpbmplY3Rl
ZFNjcmlwdC53cmFwT2JqZWN0KGV4Y2VwdGlvbiwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YmFj
a3RyYWNlT2JqZWN0R3JvdXApLT5vcGVuQWNjZXNzb3JzKCk7CiAgICAgICAgICAgICAvLyBtX2Jy
ZWFrQXV4RGF0YSBtaWdodCBiZSBudWxsIGFmdGVyIHRoaXMuCiAgICAgICAgIH0KICAgICB9CkBA
IC02NzIsNiArNjQ2LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShK
U0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IERlcHJlY2EKICAgICAgICAgc2NyaXB0
RGVidWdTZXJ2ZXIoKS5yZW1vdmVCcmVha3BvaW50KG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtw
b2ludElEKTsKICAgICAgICAgbV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SUQgPSBKU0M6
Om5vQnJlYWtwb2ludElEOwogICAgIH0KKwogICAgIGlmIChtX2xpc3RlbmVyKQogICAgICAgICBt
X2xpc3RlbmVyLT5kaWRQYXVzZSgpOwogfQpAQCAtNjk1LDcgKzY3MCw2IEBAIHZvaWQgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudDo6ZGlkU2FtcGxlUHJvYmUoSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0
YXRlLCBpbnQgcHJvCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rp
b25Tb3VuZCgpCiB7CiAgICAgLy8gRklYTUU6IFdlIHNob3VsZCBzZW5kIGEgbWVzc2FnZSB0byB0
aGUgZnJvbnRlbmQgdG8gbWFrZSB0aGUgZnJvbnRlbmQgYmVlcC4KLSAgICBzeXN0ZW1CZWVwKCk7
CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQ29udGludWUoKQpAQCAtNzAz
LDYgKzY3Nyw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQ29udGludWUoKQog
ICAgIG1fcGF1c2VkU2NyaXB0U3RhdGUgPSBudWxscHRyOwogICAgIG1fY3VycmVudENhbGxTdGFj
ayA9IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiAgICAgY2xlYXJCcmVha0RldGFpbHMoKTsK
KwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXN1bWVkKCk7CiB9CiAKQEAgLTczNiw5ICs3
MTEsMTAgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpjbGVhclJlc29sdmVkQnJlYWtw
b2ludFN0YXRlKCkKIGJvb2wgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YXNzZXJ0UGF1c2VkKEVy
cm9yU3RyaW5nKiBlcnJvclN0cmluZykKIHsKICAgICBpZiAoIW1fcGF1c2VkU2NyaXB0U3RhdGUp
IHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIkNhbiBvbmx5IHBlcmZvcm0gb3BlcmF0aW9uIHdo
aWxlIHBhdXNlZC4iOworICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkNhbiBv
bmx5IHBlcmZvcm0gb3BlcmF0aW9uIHdoaWxlIHBhdXNlZC4iKTsKICAgICAgICAgcmV0dXJuIGZh
bHNlOwogICAgIH0KKwogICAgIHJldHVybiB0cnVlOwogfQogCkBAIC03NTYsNiArNzMyLDcgQEAg
dm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRDbGVhckdsb2JhbE9iamVjdCgpCiAgICAg
Y2xlYXJSZXNvbHZlZEJyZWFrcG9pbnRTdGF0ZSgpOwogfQogCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAotI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NS
SVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQorI2VuZGlmIC8vIEVOQUJMRShKQVZB
U0NSSVBUX0RFQlVHR0VSKQorI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5oCnNpbWlsYXJpdHkgaW5kZXggNjclCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKcmVuYW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAppbmRleCA4ZmU2
MTM2Li40ZGQwZTgxIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtMzAsNjIgKzMwLDUyIEBACiAjaWZu
ZGVmIEluc3BlY3RvckRlYnVnZ2VyQWdlbnRfaAogI2RlZmluZSBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50X2gKIAotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVD
VE9SKQorI2lmIEVOQUJMRShJTlNQRUNUT1IpCisjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdH
RVIpCiAKLSNpbmNsdWRlICJDb25zb2xlQVBJVHlwZXMuaCIKLSNpbmNsdWRlICJDb25zb2xlVHlw
ZXMuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKLSNpbmNsdWRlIDxiaW5k
aW5ncy9TY3JpcHRWYWx1ZS5oPgotI2luY2x1ZGUgPGRlYnVnZ2VyL0RlYnVnZ2VyLmg+Ci0jaW5j
bHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckpTQmFja2VuZERpc3BhdGNoZXJzLmg+Ci0jaW5jbHVk
ZSA8aW5zcGVjdG9yL0luc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5oPgotI2luY2x1ZGUg
PGluc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50Lmg+Ci0jaW5jbHVkZSA8aW5zcGVjdG9yL1Njcmlw
dERlYnVnTGlzdGVuZXIuaD4KKyNpbmNsdWRlICJJbnNwZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVy
cy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckpTRnJvbnRlbmREaXNwYXRjaGVycy5oIgorI2luY2x1
ZGUgIlNjcmlwdEJyZWFrcG9pbnQuaCIKKyNpbmNsdWRlICJTY3JpcHREZWJ1Z0xpc3RlbmVyLmgi
CisjaW5jbHVkZSAiYmluZGluZ3MvU2NyaXB0VmFsdWUuaCIKKyNpbmNsdWRlICJkZWJ1Z2dlci9E
ZWJ1Z2dlci5oIgorI2luY2x1ZGUgImluc3BlY3Rvci9JbnNwZWN0b3JBZ2VudEJhc2UuaCIKICNp
bmNsdWRlIDx3dGYvRm9yd2FyZC5oPgogI2luY2x1ZGUgPHd0Zi9IYXNoTWFwLmg+CisjaW5jbHVk
ZSA8d3RmL05vbmNvcHlhYmxlLmg+CiAjaW5jbHVkZSA8d3RmL1Bhc3NPd25QdHIuaD4KICNpbmNs
dWRlIDx3dGYvUGFzc1JlZlB0ci5oPgogI2luY2x1ZGUgPHd0Zi9WZWN0b3IuaD4KICNpbmNsdWRl
IDx3dGYvdGV4dC9TdHJpbmdIYXNoLmg+CiAKIG5hbWVzcGFjZSBJbnNwZWN0b3IgeworCiBjbGFz
cyBJbmplY3RlZFNjcmlwdDsKIGNsYXNzIEluamVjdGVkU2NyaXB0TWFuYWdlcjsKIGNsYXNzIElu
c3BlY3RvckFycmF5OwogY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogY2xhc3MgSW5zcGVjdG9yVmFs
dWU7CiBjbGFzcyBTY3JpcHREZWJ1Z1NlcnZlcjsKLX0KLQotbmFtZXNwYWNlIFdlYkNvcmUgewot
Ci1jbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwotCiB0eXBlZGVmIFN0cmluZyBFcnJvclN0cmlu
ZzsKIAotY2xhc3MgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3JBZ2Vu
dEJhc2UsIHB1YmxpYyBJbnNwZWN0b3I6OlNjcmlwdERlYnVnTGlzdGVuZXIsIHB1YmxpYyBJbnNw
ZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKLSAgICBX
VEZfTUFLRV9OT05DT1BZQUJMRShJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KTsgV1RGX01BS0VfRkFT
VF9BTExPQ0FURUQ7CitjbGFzcyBKU19FWFBPUlRfUFJJVkFURSBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGljIFNjcmlwdERlYnVnTGlzdGVu
ZXIsIHB1YmxpYyBJbnNwZWN0b3JEZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVySGFuZGxlciB7Cisg
ICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCk7CisgICAgV1RG
X01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6CiAgICAgc3RhdGljIGNvbnN0IGNoYXIqIGJh
Y2t0cmFjZU9iamVjdEdyb3VwOwogCiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dCgpOwogCi0gICAgdmlydHVhbCB2b2lkIGRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNw
ZWN0b3I6Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3Rvcjo6SW5zcGVjdG9yQmFj
a2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lG
cm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEaXNjb25uZWN0UmVhc29uKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3RvckZyb250ZW5kQ2hhbm5lbCosIEluc3BlY3RvckJhY2tlbmREaXNwYXRjaGVyKikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHdpbGxEZXN0cm95RnJvbnRlbmRBbmRCYWNrZW5kKElu
c3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOwogCi0gICAgYm9vbCBpc1BhdXNlZCgp
OwotICAgIHZvaWQgYWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdlU291cmNlLCBNZXNzYWdlVHlw
ZSk7Ci0KLSAgICAvLyBQYXJ0IG9mIHRoZSBwcm90b2NvbC4KICAgICB2aXJ0dWFsIHZvaWQgZW5h
YmxlKEVycm9yU3RyaW5nKikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJy
b3JTdHJpbmcqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtwb2ludHNBY3Rp
dmUoRXJyb3JTdHJpbmcqLCBib29sIGFjdGl2ZSkgb3ZlcnJpZGU7Ci0KICAgICB2aXJ0dWFsIHZv
aWQgc2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiwgaW50IGxpbmVOdW1iZXIsIGNvbnN0
IFN0cmluZyogb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyogb3B0aW9uYWxVUkxSZWdleCwgY29u
c3QgaW50KiBvcHRpb25hbENvbHVtbk51bWJlciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0Piogb3B0aW9ucywgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6
OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNw
ZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+PiYgbG9jYXRpb25zLCBSZWZQ
dHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OkJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVyPj4mIGJyZWFrcG9pbnRBY3Rpb25J
ZGVudGlmaWVycykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldEJyZWFrcG9pbnQoRXJy
b3JTdHJpbmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiBsb2Nh
dGlvbiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Piogb3B0aW9ucywg
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxJ
bnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6TG9jYXRpb24+JiBhY3R1YWxMb2NhdGlv
biwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50QWN0aW9uSWRlbnRpZmllcj4+JiBicmVha3BvaW50
QWN0aW9uSWRlbnRpZmllcnMpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVCcmVh
a3BvaW50KEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBicmVha3BvaW50SWRlbnRpZmllcikg
b3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmlu
ZyosIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uKSBv
dmVycmlkZTsKLQorICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJp
bmcqLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24pIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCBzZWFyY2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJp
bmcmIHNjcmlwdElELCBjb25zdCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRpb25hbENh
c2VTZW5zaXRpdmUsIGNvbnN0IGJvb2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkdlbmVyaWNUeXBl
czo6U2VhcmNoTWF0Y2g+PiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBnZXRTY3JpcHRT
b3VyY2UoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCBTdHJpbmcqIHNjcmlw
dFNvdXJjZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGdldEZ1bmN0aW9uRGV0YWlscyhF
cnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgZnVuY3Rpb25JZCwgUmVmUHRyPEluc3BlY3Rvcjo6
VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpGdW5jdGlvbkRldGFpbHM+Jikgb3ZlcnJpZGU7CkBAIC05
NSwyMSArODUsMTYgQEAgcHVibGljOgogICAgIHZpcnR1YWwgdm9pZCBzdGVwSW50byhFcnJvclN0
cmluZyopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzdGVwT3V0KEVycm9yU3RyaW5nKikg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFBhdXNlT25FeGNlcHRpb25zKEVycm9yU3Ry
aW5nKiwgY29uc3QgU3RyaW5nJiBwYXVzZVN0YXRlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgZXZhbHVhdGVPbkNhbGxGcmFtZShFcnJvclN0cmluZyosCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFN0cmluZyYgY2FsbEZyYW1lSWQsCi0gICAgICAgICAgICAgICAgICAg
ICAgICAgICAgIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwKLSAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgY29uc3QgYm9vbCogaW5jbHVkZUNvbW1hbmRMaW5lQVBJLAotICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0
ZUNvbnNvbGUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wqIHJldHVy
bkJ5VmFsdWUsCi0gICAgICAgICAgICAgICAgICAgICAgICAgICAgIGNvbnN0IGJvb2wqIGdlbmVy
YXRlUHJldmlldywKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgUmVmUHRyPEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwKLSAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgSW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6T3B0T3V0cHV0PGJv
b2w+KiB3YXNUaHJvd24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBldmFsdWF0ZU9uQ2Fs
bEZyYW1lKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwgY29uc3QgU3Ry
aW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBp
bmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNB
bmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2Vu
ZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9v
bD4qIHdhc1Rocm93bikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldE92ZXJsYXlNZXNz
YWdlKEVycm9yU3RyaW5nKiwgY29uc3QgU3RyaW5nKikgb3ZlcnJpZGU7CiAKLSAgICB2b2lkIHNj
aGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckZy
b250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFbnVtIGJyZWFrUmVhc29uLCBQYXNzUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBkYXRhKTsKKyAgICBib29sIGlzUGF1c2VkKCk7Cisg
ICAgCisgICAgdm9pZCBoYW5kbGVDb25zb2xlQXNzZXJ0KCk7CisKKyAgICB2b2lkIHNjaGVkdWxl
UGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6
OlJlYXNvbjo6RW51bSBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGRh
dGEpOwogICAgIHZvaWQgY2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKTsKLSAgICB2b2lkIGJy
ZWFrUHJvZ3JhbShJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVy
OjpSZWFzb246OkVudW0gYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+IGRhdGEpOworICAgIHZvaWQgYnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2Vy
RnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkVudW0gYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBkYXRhKTsKICAgICB2b2lkIHNjcmlwdEV4ZWN1dGlvbkJsb2NrZWRC
eUNTUChjb25zdCBTdHJpbmcmIGRpcmVjdGl2ZVRleHQpOwogCiAgICAgY2xhc3MgTGlzdGVuZXIg
ewpAQCAtMTIyLDIyICsxMDcsMjYgQEAgcHVibGljOgogICAgIH07CiAgICAgdm9pZCBzZXRMaXN0
ZW5lcihMaXN0ZW5lciogbGlzdGVuZXIpIHsgbV9saXN0ZW5lciA9IGxpc3RlbmVyOyB9CiAKLSAg
ICB2aXJ0dWFsIEluc3BlY3Rvcjo6U2NyaXB0RGVidWdTZXJ2ZXImIHNjcmlwdERlYnVnU2VydmVy
KCkgPSAwOworICAgIHZpcnR1YWwgU2NyaXB0RGVidWdTZXJ2ZXImIHNjcmlwdERlYnVnU2VydmVy
KCkgPSAwOwogCiBwcm90ZWN0ZWQ6Ci0gICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudChJbnN0cnVt
ZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqKTsKKyAgICBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciopOworCisgICAgSW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKSBjb25zdCB7IHJldHVy
biBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsgfQorICAgIHZpcnR1YWwgSW5qZWN0ZWRTY3JpcHQg
aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nKiwgY29uc3QgaW50KiBleGVjdXRpb25D
b250ZXh0SWQpID0gMDsKIAogICAgIHZpcnR1YWwgdm9pZCBzdGFydExpc3RlbmluZ1NjcmlwdERl
YnVnU2VydmVyKCkgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBzdG9wTGlzdGVuaW5nU2NyaXB0RGVi
dWdTZXJ2ZXIoYm9vbCBpc0JlaW5nRGVzdHJveWVkKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIHN0
b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcihib29sIHNraXBSZWNvbXBpbGUpID0gMDsKICAg
ICB2aXJ0dWFsIHZvaWQgbXV0ZUNvbnNvbGUoKSA9IDA7CiAgICAgdmlydHVhbCB2b2lkIHVubXV0
ZUNvbnNvbGUoKSA9IDA7Ci0gICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGlu
amVjdGVkU2NyaXB0TWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyOyB9Ci0gICAgdmlydHVhbCBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0IGluamVjdGVkU2Ny
aXB0Rm9yRXZhbChFcnJvclN0cmluZyosIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKSA9
IDA7CiAKICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKCk7Ci0gICAgdmlydHVhbCB2b2lkIGRpc2Fi
bGUoYm9vbCBpc0JlaW5nRGVzdHJveWVkKTsKKyAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShib29s
IHNraXBSZWNvbXBpbGUpOwogICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkV4ZWNTdGF0
ZSosIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBjYWxsRnJhbWVzLCBjb25zdCBEZXBy
ZWNhdGVkOjpTY3JpcHRWYWx1ZSYgZXhjZXB0aW9uKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZv
aWQgZGlkQ29udGludWUoKSBvdmVycmlkZTsKKworICAgIHZpcnR1YWwgU3RyaW5nIHNvdXJjZU1h
cFVSTEZvclNjcmlwdChjb25zdCBTY3JpcHQmKTsKKwogICAgIHZvaWQgZGlkQ2xlYXJHbG9iYWxP
YmplY3QoKTsKIAogcHJpdmF0ZToKQEAgLTE0Niw0MSArMTM1LDQxIEBAIHByaXZhdGU6CiAgICAg
dmlydHVhbCB2b2lkIGRpZFBhcnNlU291cmNlKEpTQzo6U291cmNlSUQsIGNvbnN0IFNjcmlwdCYp
IG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBmYWlsZWRUb1BhcnNlU291cmNlKGNv
bnN0IFN0cmluZyYgdXJsLCBjb25zdCBTdHJpbmcmIGRhdGEsIGludCBmaXJzdExpbmUsIGludCBl
cnJvckxpbmUsIGNvbnN0IFN0cmluZyYgZXJyb3JNZXNzYWdlKSBvdmVycmlkZSBmaW5hbDsKICAg
ICB2aXJ0dWFsIHZvaWQgZGlkU2FtcGxlUHJvYmUoSlNDOjpFeGVjU3RhdGUqLCBpbnQgcHJvYmVJ
ZGVudGlmaWVyLCBpbnQgaGl0Q291bnQsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlJiBz
YW1wbGUpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBicmVha3BvaW50QWN0aW9u
U291bmQoKSBvdmVycmlkZSBmaW5hbDsKIAotICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiByZXNvbHZlQnJlYWtwb2ludChjb25zdCBTdHJp
bmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyLCBKU0M6OlNvdXJjZUlELCBjb25zdCBJbnNwZWN0b3I6
OlNjcmlwdEJyZWFrcG9pbnQmKTsKKyAgICB2aXJ0dWFsIHZvaWQgYnJlYWtwb2ludEFjdGlvblNv
dW5kKCkgb3ZlcnJpZGU7CisKKyAgICBQYXNzUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6
OkRlYnVnZ2VyOjpMb2NhdGlvbj4gcmVzb2x2ZUJyZWFrcG9pbnQoY29uc3QgU3RyaW5nJiBicmVh
a3BvaW50SWRlbnRpZmllciwgSlNDOjpTb3VyY2VJRCwgY29uc3QgU2NyaXB0QnJlYWtwb2ludCYp
OwogICAgIGJvb2wgYXNzZXJ0UGF1c2VkKEVycm9yU3RyaW5nKik7CiAgICAgdm9pZCBjbGVhclJl
c29sdmVkQnJlYWtwb2ludFN0YXRlKCk7CiAgICAgdm9pZCBjbGVhckJyZWFrRGV0YWlscygpOwog
Ci0gICAgYm9vbCBicmVha3BvaW50QWN0aW9uc0Zyb21Qcm90b2NvbChFcnJvclN0cmluZyosIFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYgYWN0aW9ucywgVmVjdG9yPEluc3BlY3Rv
cjo6U2NyaXB0QnJlYWtwb2ludEFjdGlvbj4qIHJlc3VsdCk7Ci0KLSAgICBTdHJpbmcgc291cmNl
TWFwVVJMRm9yU2NyaXB0KGNvbnN0IFNjcmlwdCYpOworICAgIGJvb2wgYnJlYWtwb2ludEFjdGlv
bnNGcm9tUHJvdG9jb2woRXJyb3JTdHJpbmcqLCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiBhY3Rp
b25zLCBWZWN0b3I8U2NyaXB0QnJlYWtwb2ludEFjdGlvbj4qIHJlc3VsdCk7CiAKICAgICB0eXBl
ZGVmIEhhc2hNYXA8SlNDOjpTb3VyY2VJRCwgU2NyaXB0PiBTY3JpcHRzTWFwOwogICAgIHR5cGVk
ZWYgSGFzaE1hcDxTdHJpbmcsIFZlY3RvcjxKU0M6OkJyZWFrcG9pbnRJRD4+IEJyZWFrcG9pbnRJ
ZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFrcG9pbnRJRHNNYXA7Ci0gICAgdHlwZWRlZiBIYXNo
TWFwPFN0cmluZywgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0Pj4gQnJlYWtwb2lu
dElkZW50aWZpZXJUb0JyZWFrcG9pbnRNYXA7CisgICAgdHlwZWRlZiBIYXNoTWFwPFN0cmluZywg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4+IEJyZWFrcG9pbnRJZGVudGlmaWVyVG9CcmVha3BvaW50
TWFwOwogCi0gICAgSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOwotICAgIHN0ZDo6dW5pcXVlX3B0cjxJbnNwZWN0b3I6Okluc3BlY3RvckRl
YnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKLSAgICBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tl
bmREaXNwYXRjaGVyOworICAgIEluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlw
dE1hbmFnZXI7CisgICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmRE
aXNwYXRjaGVyPiBtX2Zyb250ZW5kRGlzcGF0Y2hlcjsKKyAgICBSZWZQdHI8SW5zcGVjdG9yRGVi
dWdnZXJCYWNrZW5kRGlzcGF0Y2hlcj4gbV9iYWNrZW5kRGlzcGF0Y2hlcjsKKyAgICBMaXN0ZW5l
ciogbV9saXN0ZW5lcjsKICAgICBKU0M6OkV4ZWNTdGF0ZSogbV9wYXVzZWRTY3JpcHRTdGF0ZTsK
ICAgICBEZXByZWNhdGVkOjpTY3JpcHRWYWx1ZSBtX2N1cnJlbnRDYWxsU3RhY2s7CiAgICAgU2Ny
aXB0c01hcCBtX3NjcmlwdHM7CiAgICAgQnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVy
QnJlYWtwb2ludElEc01hcCBtX2JyZWFrcG9pbnRJZGVudGlmaWVyVG9EZWJ1Z1NlcnZlckJyZWFr
cG9pbnRJRHM7CiAgICAgQnJlYWtwb2ludElkZW50aWZpZXJUb0JyZWFrcG9pbnRNYXAgbV9qYXZh
U2NyaXB0QnJlYWtwb2ludHM7CiAgICAgSlNDOjpCcmVha3BvaW50SUQgbV9jb250aW51ZVRvTG9j
YXRpb25CcmVha3BvaW50SUQ7Ci0gICAgSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckZyb250
ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFbnVtIG1fYnJlYWtSZWFzb247Ci0gICAgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX2JyZWFrQXV4RGF0YTsKKyAgICBJbnNwZWN0b3JE
ZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFbnVtIG1fYnJlYWtSZWFzb247Cisg
ICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbV9icmVha0F1eERhdGE7CiAgICAgYm9vbCBtX2Vu
YWJsZWQ7CiAgICAgYm9vbCBtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZDsKLSAgICBMaXN0ZW5l
ciogbV9saXN0ZW5lcjsKICAgICBpbnQgbV9uZXh0UHJvYmVTYW1wbGVJZDsKICAgICBpbnQgbV9u
ZXh0QnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXI7CiB9OwogCi19IC8vIG5hbWVzcGFjZSBXZWJD
b3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAotI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NS
SVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQorI2VuZGlmIC8vIEVOQUJMRShKQVZB
U0NSSVBUX0RFQlVHR0VSKQorI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCiAKICNlbmRpZiAv
LyAhZGVmaW5lZChJbnNwZWN0b3JEZWJ1Z2dlckFnZW50X2gpCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdl
bnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxP
YmplY3REZWJ1Z2dlckFnZW50LmNwcApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAw
Li5lNmM5NWZjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcApAQCAtMCwwICsxLDY3
IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNl
cnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5
IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBw
cm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEu
IFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29w
eXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9s
bG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0g
bXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxp
c3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICog
ICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhl
IGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExF
IElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVT
LCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJ
RVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBV
UlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisg
KiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURF
TlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJ
TkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRV
VEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsg
T1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9S
WQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZ
LCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5H
IElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYg
QURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2luY2x1
ZGUgImNvbmZpZy5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5oIgor
CisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0LmgiCisj
aW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCisKK3VzaW5nIG5hbWVzcGFjZSBKU0M7
CisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQ6
OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVj
dGVkU2NyaXB0TWFuYWdlciwgSlNDOjpKU0dsb2JhbE9iamVjdCYgZ2xvYmFsT2JqZWN0KQorICAg
IDogSW5zcGVjdG9yRGVidWdnZXJBZ2VudChpbmplY3RlZFNjcmlwdE1hbmFnZXIpCisgICAgLCBt
X3NjcmlwdERlYnVnU2VydmVyKGdsb2JhbE9iamVjdCkKK3sKK30KKwordm9pZCBKU0dsb2JhbE9i
amVjdERlYnVnZ2VyQWdlbnQ6OnN0YXJ0TGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIoKQorewor
ICAgIHNjcmlwdERlYnVnU2VydmVyKCkuYWRkTGlzdGVuZXIodGhpcyk7Cit9CisKK3ZvaWQgSlNH
bG9iYWxPYmplY3REZWJ1Z2dlckFnZW50OjpzdG9wTGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIo
Ym9vbCBpc0JlaW5nRGVzdHJveWVkKQoreworICAgIHNjcmlwdERlYnVnU2VydmVyKCkucmVtb3Zl
TGlzdGVuZXIodGhpcywgaXNCZWluZ0Rlc3Ryb3llZCk7Cit9CisKK0luamVjdGVkU2NyaXB0IEpT
R2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3Ry
aW5nKiBlcnJvciwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpCit7CisgICAgaWYgKGV4
ZWN1dGlvbkNvbnRleHRJZCkgeworICAgICAgICAqZXJyb3IgPSBBU0NJSUxpdGVyYWwoIkV4ZWN1
dGlvbiBjb250ZXh0IGlkIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIEpTQ29udGV4dCBpbnNwZWN0aW9u
IGFzIHRoZXJlIGlzIG9ubHkgb25lIGV4ZWN1dGlvbiBjb250ZXh0LiIpOworICAgICAgICByZXR1
cm4gSW5qZWN0ZWRTY3JpcHQoKTsKKyAgICB9CisKKyAgICBFeGVjU3RhdGUqIGV4ZWMgPSBtX3Nj
cmlwdERlYnVnU2VydmVyLmdsb2JhbE9iamVjdCgpLmdsb2JhbEV4ZWMoKTsKKyAgICByZXR1cm4g
aW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCktPmluamVjdGVkU2NyaXB0Rm9yKGV4ZWMpOworfQorCit9
IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCmRp
ZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2Jh
bE9iamVjdERlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0
CmluZGV4IDAwMDAwMDAuLmE5ZmQ2NzkKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuaApA
QCAtMCwwICsxLDY0IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFwcGxlIEluYy4gQWxs
IHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJj
ZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJl
IHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucworICogYXJl
IG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0
aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25z
IGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4g
YmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90
aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVy
IGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3Zp
ZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJ
REVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElF
RCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBM
SUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJ
Q1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBM
RSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJ
UkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElB
TCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5U
IE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgor
ICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQg
T04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJ
Q1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJX
SVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdB
UkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisg
Ki8KKworI2lmbmRlZiBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnRfaAorI2RlZmluZSBKU0ds
b2JhbE9iamVjdERlYnVnZ2VyQWdlbnRfaAorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKworI2lu
Y2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVj
dFNjcmlwdERlYnVnU2VydmVyLmgiCisKK25hbWVzcGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBK
U0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudCB7CisgICAgV1RGX01BS0VfTk9OQ09QWUFCTEUoSlNHbG9iYWxPYmplY3REZWJ1Z2dl
ckFnZW50KTsKKyAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKK3B1YmxpYzoKKyAgICBKU0ds
b2JhbE9iamVjdERlYnVnZ2VyQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSlNDOjpKU0ds
b2JhbE9iamVjdCYpOworICAgIHZpcnR1YWwgfkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudCgp
IHsgfQorCisgICAgdmlydHVhbCBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyJiBzY3Jp
cHREZWJ1Z1NlcnZlcigpIG92ZXJyaWRlIHsgcmV0dXJuIG1fc2NyaXB0RGVidWdTZXJ2ZXI7IH0K
KworICAgIHZpcnR1YWwgdm9pZCBzdGFydExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKCkgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcihi
b29sIGlzQmVpbmdEZXN0cm95ZWQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgSW5qZWN0ZWRTY3Jp
cHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVycm9yU3RyaW5nKiwgY29uc3QgaW50KiBleGVjdXRp
b25Db250ZXh0SWQpIG92ZXJyaWRlOworCisgICAgLy8gRklYTUU6IFRoaXMgbmVlZHMgYSBDb25z
b2xlQWdlbnQgdG8gc2VuZCBhIGxvZyB0by4KKyAgICB2aXJ0dWFsIHZvaWQgYnJlYWtwb2ludEFj
dGlvbkxvZyhKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IFN0cmluZyYpIG92ZXJyaWRlIGZpbmFsIHsg
fQorCisgICAgLy8gRklYTUU6IEphdmFTY3JpcHQgaW5zcGVjdG9yIGRvZXMgbm90IHlldCBoYXZl
IGEgY29uc29sZSBvYmplY3QgdG8gbXV0ZS4KKyAgICB2aXJ0dWFsIHZvaWQgbXV0ZUNvbnNvbGUo
KSBvdmVycmlkZSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgdW5tdXRlQ29uc29sZSgpIG92ZXJyaWRl
IHsgfQorCitwcml2YXRlOgorICAgIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIgbV9z
Y3JpcHREZWJ1Z1NlcnZlcjsKK307CisKK30gLy8gbmFtZXNwYWNlIEluc3BlY3RvcgorCisjZW5k
aWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKKworI2VuZGlmIC8vICFkZWZpbmVkKEpTR2xvYmFsT2Jq
ZWN0RGVidWdnZXJBZ2VudF9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvQ01ha2VMaXN0
cy50eHQgYi9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAppbmRleCBkMDNlOGFkLi43YTI3
NTFlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMTU4Nyw3ICsxNTg3LDYgQEAgc2V0KFdlYkNv
cmVfU09VUkNFUwogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCiAg
ICAgaW5zcGVjdG9yL0luc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0lu
c3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwCi0gICAgaW5zcGVjdG9yL0luc3BlY3RvckRlYnVn
Z2VyQWdlbnQuY3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwu
Y3BwCiAgICAgaW5zcGVjdG9yL0luc3BlY3RvckZyb250ZW5kSG9zdC5jcHAKICAgICBpbnNwZWN0
b3IvSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwCkBAIC0xNjE4LDYgKzE2MTcsNyBAQCBz
ZXQoV2ViQ29yZV9TT1VSQ0VTCiAgICAgaW5zcGVjdG9yL1NjcmlwdENhbGxGcmFtZS5jcHAKICAg
ICBpbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmNwcAogICAgIGluc3BlY3Rvci9UaW1lbGluZVJl
Y29yZEZhY3RvcnkuY3BwCisgICAgaW5zcGVjdG9yL1dlYkRlYnVnZ2VyQWdlbnQuY3BwCiAgICAg
aW5zcGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvV29ya2VyRGVi
dWdnZXJBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5j
cHAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3Jl
L0NoYW5nZUxvZwppbmRleCBiYmQyZWM0Li4wOTlkMGQwIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMgKzEs
NjcgQEAKKzIwMTQtMDEtMjUgIEpvc2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4K
KworICAgICAgICBXZWIgSW5zcGVjdG9yOiBNb3ZlIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgaW50
byBKYXZhU2NyaXB0Q29yZQorICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1
Zy5jZ2k/aWQ9MTI3NjI5CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisK
KyAgICAgICAgVGVzdDogaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3BhdXNlLW9uLWFzc2Vy
dC5odG1sCisKKyAgICAgICAgKiBDTWFrZUxpc3RzLnR4dDoKKyAgICAgICAgKiBGb3J3YXJkaW5n
SGVhZGVycy9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaDogQWRkZWQu
CisgICAgICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBXZWJDb3JlLnZjeHBy
b2ovV2ViQ29yZS52Y3hwcm9qOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2ouZmlsdGVyczoKKyAgICAgICAgKiBXZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHBy
b2o6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcDoKKyAgICAgICAg
LSBSZW1vdmUgSW5zcGVjdG9yRGVidWdnZXJBZ2VudC4KKyAgICAgICAgLSBBZGQgV2ViRGVidWdn
ZXJBZ2VudCAoc2hhcmVkIGJldHdlZW4gUGFnZSBhbmQgV29ya2VyKS4KKworICAgICAgICAqIGlu
c3BlY3Rvci9XZWJEZWJ1Z2dlckFnZW50Lmg6IEFkZGVkLgorICAgICAgICAoV2ViQ29yZTo6V2Vi
RGVidWdnZXJBZ2VudDo6fldlYkRlYnVnZ2VyQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9X
ZWJEZWJ1Z2dlckFnZW50LmNwcDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJEZWJ1Z2dl
ckFnZW50OjpXZWJEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkRlYnVnZ2Vy
QWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpXZWJEZWJ1Z2dlckFnZW50OjpkaXNh
YmxlKToKKyAgICAgICAgU2hhcmVkIGNvZGUgZm9yIFBhZ2UgYW5kIFdvcmtlciBkZWJ1Z2dlciBh
Z2VudHMuCisgICAgICAgIEluc3RydW1lbnRpbmcgYWdlbnRzIGlzIGEgY29uY2VwdCBpbiBXZWJD
b3JlIG9ubHksCisgICAgICAgIGFuZCB0aGUgRGVidWdnZXIgYWdlbnQgaXMgb25seSBpbiB0aGUg
aW5zdHJ1bWVudGluZworICAgICAgICBhZ2VudHMgbGlzdCB3aGVuIGl0IGlzIGVuYWJsZWQgYW5k
IHJlbW92ZWQgd2hlbiBkaXNhYmxlZC4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnN0cnVtZW50
aW5nQWdlbnRzLmg6CisgICAgICAgIChXZWJDb3JlOjpJbnN0cnVtZW50aW5nQWdlbnRzOjppbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRpbmdBZ2Vu
dHM6OnNldEluc3BlY3RvckRlYnVnZ2VyQWdlbnQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
RE9NRGVidWdnZXJBZ2VudC5oOgorICAgICAgICBVcGRhdGUgbmFtZXNwYWNlIGZvciBkZWJ1Z2dl
ciBhZ2VudC4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24u
Y3BwOgorICAgICAgICAoV2ViQ29yZTo6aXNDb25zb2xlQXNzZXJ0TWVzc2FnZSk6CisgICAgICAg
IChXZWJDb3JlOjpJbnNwZWN0b3JJbnN0cnVtZW50YXRpb246OmFkZE1lc3NhZ2VUb0NvbnNvbGVJ
bXBsKToKKyAgICAgICAgRGVidWdnZXJBZ2VudCBpbiBKYXZhU2NyaXB0Q29yZSBkb2VzIG5vdCB5
ZXQga25vdyBhYm91dCBjb25zb2xlCisgICAgICAgIHR5cGVzLiBTbyB0ZW1wb3JhcmlseSBoYW5k
bGUgaXQgaGVyZS4gV2UgbmVlZCB0byBnaXZlIEphdmFTY3JpcHRDb3JlCisgICAgICAgIHNvbWUg
Y29uY2VwdCBvZiBDb25zb2xlIG1lc3NhZ2VzIGFuZCB0eXBlcy4KKworICAgICAgICAqIGluc3Bl
Y3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdn
ZXJBZ2VudDo6UGFnZURlYnVnZ2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVn
Z2VyQWdlbnQ6OmVuYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6
ZGlzYWJsZSk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6c291cmNlTWFw
VVJMRm9yU2NyaXB0KToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50Ojppbmpl
Y3RlZFNjcmlwdEZvckV2YWwpOgorICAgICAgICAqIGluc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2Vu
dC5oOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcDoKKyAgICAg
ICAgKFdlYkNvcmU6OldvcmtlckRlYnVnZ2VyQWdlbnQ6OldvcmtlckRlYnVnZ2VyQWdlbnQpOgor
ICAgICAgICAoV2ViQ29yZTo6V29ya2VyRGVidWdnZXJBZ2VudDo6aW5qZWN0ZWRTY3JpcHRGb3JF
dmFsKToKKyAgICAgICAgKiBpbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5oOgorICAgICAg
ICBNb2Rlcm5pemUgdGhlIFBhZ2UgYW5kIFdvcmtlciBkZWJ1Z2dlciBhZ2VudHMuCisKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHA6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JDb250cm9sbGVyOjpJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgKiBp
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oOgorICAgICAgICAqIGluc3BlY3Rvci9Xb3Jr
ZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Oldvcmtlckluc3Bl
Y3RvckNvbnRyb2xsZXI6Oldvcmtlckluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICBOZXcg
Y29uc3RydWN0b3JzIGZvciB0aGUgZGVidWdnZXIgYWdlbnRzLgorCiAyMDE0LTAxLTI0ICBKb3Nl
cGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgV2ViIEluc3BlY3Rv
cjogTW92ZSBJbnNwZWN0b3JSdW50aW1lQWdlbnQgaW50byBKYXZhU2NyaXB0Q29yZQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVy
cy9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApuZXcgZmlsZSBtb2Rl
IDEwMDY0NAppbmRleCAwMDAwMDAwLi43MDcyZWJlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNl
L1dlYkNvcmUvRm9yd2FyZGluZ0hlYWRlcnMvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmgKQEAgLTAsMCArMSw0IEBACisjaWZuZGVmIFdlYkNvcmVfRldEX0luc3BlY3Rv
ckRlYnVnZ2VyQWdlbnRfaAorI2RlZmluZSBXZWJDb3JlX0ZXRF9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50X2gKKyNpbmNsdWRlIDxKYXZhU2NyaXB0Q29yZS9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg+
CisjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0g
Yi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0LmFtCmluZGV4IGM1ZDQwN2IuLjdhODUw
OWIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0KKysrIGIv
U291cmNlL1dlYkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtMzc4Niw4ICszNzg2LDYgQEAg
d2ViY29yZV9zb3VyY2VzICs9IFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
RGF0YWJhc2VJbnN0cnVtZW50YXRpb24uaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oIFwKLQlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgXAotCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JET01BZ2VudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01BZ2VudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdn
ZXJBZ2VudC5jcHAgXApAQCAtMzg1OCw2ICszODU2LDggQEAgd2ViY29yZV9zb3VyY2VzICs9IFwK
IAlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvU2NyaXB0Q2FsbFN0YWNrLmggXAogCVNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwIFwKIAlTb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvVGltZWxpbmVSZWNvcmRGYWN0b3J5LmggXAorCVNvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9XZWJEZWJ1Z2dlckFnZW50LmNwcCBcCisJU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dlYkRlYnVnZ2VyQWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtl
ckNvbnNvbGVBZ2VudC5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJDb25z
b2xlQWdlbnQuaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdl
bnQuY3BwIFwKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJD
b3JlLnZjeHByb2ogYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hw
cm9qCmluZGV4IDYxOGY2ZWEuLjM2ZTEzYTggMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29y
ZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAtMTc2MjYsMTQgKzE3NjI2LDYgQEAKICAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAg
IDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZv
cm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9D
bENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAiPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4
Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRl
ZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZp
Z3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9F
eGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249Iick
KENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1
ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9u
PSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5j
bHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckRPTUFnZW50LmNwcCI+CiAgICAgICA8RXhjbHVk
ZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdS
ZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRG
cm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxl
YXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgpAQCAtMTc4OTgsNiArMTc4OTAsMTQg
QEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWls
ZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24p
fCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+
CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jc
V2ViRGVidWdnZXJBZ2VudC5jcHAiPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlv
bj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8
L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0i
JyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNs
dWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENv
bmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+
dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0
aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRy
dWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXFdvcmtlckNvbnNvbGVBZ2VudC5jcHAiPgogICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KQEAgLTIwODUyLDcgKzIwODUy
LDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JEYXRh
YmFzZUFnZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5z
cGVjdG9yRGF0YWJhc2VJbnN0cnVtZW50YXRpb24uaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmgiIC8+Ci0gICAgPENs
SW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckRPTUFnZW50
LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9y
XEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIiAvPgpAQCAtMjA4OTAsNiArMjA4ODksNyBAQAog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXFNjcmlwdENhbGxGcmFtZS5oIiAv
PgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXFNjcmlwdENhbGxTdGFjay5o
IiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXFRpbWVsaW5lUmVjb3Jk
RmFjdG9yeS5oIiAvPgorICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXFdlYkRl
YnVnZ2VyQWdlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxX
b3JrZXJDb25zb2xlQWdlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3Bl
Y3RvclxXb3JrZXJEZWJ1Z2dlckFnZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIu
LlxpbnNwZWN0b3JcV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5oIiAvPgpkaWZmIC0tZ2l0IGEv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIv
U291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmlu
ZGV4IDlkODk2ZWUuLmUzMTk4ZDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUu
dmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJD
b3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZpbHRlcnMKQEAgLTQ3NjcsOSArNDc2Nyw2IEBA
CiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRGF0YWJhc2VS
ZXNvdXJjZS5jcHAiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0Ns
Q29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmNwcCI+Ci0gICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgotICAg
IDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3Bl
Y3RvckRPTUFnZW50LmNwcCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAg
IDwvQ2xDb21waWxlPgpAQCAtNDg2Niw2ICs0ODYzLDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGluc3BlY3RvclxUaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwIj4KICAgICAgIDxGaWx0
ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcV2ViRGVidWdnZXJBZ2VudC5jcHAiPgorICAgICAgPEZpbHRl
cj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0NsQ29tcGlsZT4KICAgICA8Q2xDb21waWxlIElu
Y2x1ZGU9Ii4uXGluc3BlY3RvclxXb3JrZXJDb25zb2xlQWdlbnQuY3BwIj4KICAgICAgIDxGaWx0
ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+CkBAIC0xMjI5Myw5ICsxMjI5
Myw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRGF0
YWJhc2VSZXNvdXJjZS5oIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAg
PC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5oIj4KLSAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+Ci0g
ICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5z
cGVjdG9yRE9NQWdlbnQuaCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAg
IDwvQ2xJbmNsdWRlPgpAQCAtMTI0MDcsNiArMTI0MDQsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caW5zcGVjdG9yXFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIj4KICAgICAgIDxGaWx0
ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcV2ViRGVidWdnZXJBZ2VudC5oIj4KKyAgICAgIDxGaWx0ZXI+
aW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcV29ya2VyQ29uc29sZUFnZW50LmgiPgogICAgICAgPEZpbHRlcj5p
bnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsSW5jbHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3Jl
L1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCAxZDA0ZGIxLi4wZDhkZGNl
IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBi
eHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhw
cm9qCkBAIC0zNjQ0LDYgKzM2NDQsOCBAQAogCQlBNUM1NjZBQjEyN0EzQUFEMDBFOEEzRkYgLyog
RGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEE1QzU2NkFBMTI3QTNBQUQwMEU4QTNGRiAvKiBEaXNrSW1hZ2VDYWNo
ZUNsaWVudElPUy5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07
IH07CiAJCUE1REVCREEzMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2
YWlsYWJpbGl0eUV2ZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1REVCRDlGMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1Rhcmdl
dEF2YWlsYWJpbGl0eUV2ZW50LmNwcCAqLzsgfTsKIAkJQTVERUJEQTQxNkZCOTA4NzAwODM2RkUw
IC8qIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1REVCREEwMTZGQjkwODcwMDgzNkZF
MCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmggKi87IH07CisJCUE1
RTYxNjczMTg5NDU4MUYwMDlBREY1MCAvKiBXZWJEZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RTYxNjcxMTg5NDU4MUYwMDlB
REY1MCAvKiBXZWJEZWJ1Z2dlckFnZW50LmNwcCAqLzsgfTsKKwkJQTVFNjE2NzQxODk0NTgxRjAw
OUFERjUwIC8qIFdlYkRlYnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1RTYxNjcyMTg5NDU4MUYwMDlBREY1MCAvKiBXZWJEZWJ1Z2dl
ckFnZW50LmggKi87IH07CiAJCUE1RjZFMTZCMTMyRUQ0NkUwMDhFREFFMyAvKiBBdXRvY2FwaXRh
bGl6ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBB
NUY2RTE2QzEzMkVENDZFMDA4RURBRTMgLyogQXV0b2NhcGl0YWxpemUuY3BwICovOyB9OwogCQlB
NUY5RUY3MDEyNjY3NTBEMDBGQ0NGNTIgLyogRGlza0ltYWdlQ2FjaGVJT1MubW0gaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUY5RUY2RTEyNjY3NTBEMDBG
Q0NGNTIgLyogRGlza0ltYWdlQ2FjaGVJT1MubW0gKi87IH07CiAJCUE1RjlFRjcxMTI2Njc1MEQw
MEZDQ0Y1MiAvKiBEaXNrSW1hZ2VDYWNoZUlPUy5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTVGOUVGNkYxMjY2NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFn
ZUNhY2hlSU9TLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsg
fTsKQEAgLTYwMjAsOCArNjAyMiw2IEBACiAJCUYzMzM1QkY4MTJFMDdEQzMwMEQzMzAxMSAvKiBJ
bnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRG
aWxlOyBmaWxlUmVmID0gRjMzMzVCRjYxMkUwN0RDMzAwRDMzMDExIC8qIEluc3BlY3RvckNvbnNv
bGVBZ2VudC5jcHAgKi87IH07CiAJCUYzMzM1QkY5MTJFMDdEQzMwMEQzMzAxMSAvKiBJbnNwZWN0
b3JDb25zb2xlQWdlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEYzMzM1QkY3MTJFMDdEQzMwMEQzMzAxMSAvKiBJbnNwZWN0b3JDb25zb2xlQWdlbnQu
aCAqLzsgfTsKIAkJRjMzRjAyODIxMjA5NDdGMjAwRTU3NDNBIC8qIFNjcmlwdFByb2ZpbGUuY3Bw
IGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjMzRjAyODEx
MjA5NDdGMjAwRTU3NDNBIC8qIFNjcmlwdFByb2ZpbGUuY3BwICovOyB9OwotCQlGMzNGMDUzRDEy
MEIwREE1MDBFNTc0M0EgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgaW4gU291cmNlcyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzNGMDUzQjEyMEIwREE1MDBFNTc0
M0EgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgKi87IH07Ci0JCUYzM0YwNTNFMTIwQjBE
QTUwMEU1NzQzQSAvKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzNGMDUzQzEyMEIwREE1MDBFNTc0M0EgLyog
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oICovOyB9OwogCQlGMzQ0QzcxNDExMjVCODJDMDBGMjZF
RUUgLyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNDRDNzEyMTEyNUI4MkMwMEYyNkVFRSAvKiBJbnNwZWN0
b3JGcm9udGVuZENsaWVudC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUs
ICk7IH07IH07CiAJCUYzNDRDNzUzMTEyOTREOUQwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVu
ZENsaWVudExvY2FsLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGMzQ0Qzc1MjExMjk0RDlEMDBGMjZFRUUgLyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRM
b2NhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJ
CUYzNDRDNzU4MTEyOTRGRjYwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2Fs
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNDRD
NzU3MTEyOTRGRjYwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCAq
LzsgfTsKQEAgLTEwNjEwLDYgKzEwNjEwLDggQEAKIAkJQTVERUJEOUYxNkZCOTA4NzAwODM2RkUw
IC8qIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuY3BwICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2ViS2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxp
dHlFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1REVCREEwMTZGQjkw
ODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmggKi8g
PSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmls
ZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxh
YmlsaXR5RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVERUJEQTExNkZC
OTA4NzAwODM2RkUwIC8qIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaWRs
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5
RXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNUU2MTY3MTE4OTQ1ODFG
MDA5QURGNTAgLyogV2ViRGVidWdnZXJBZ2VudC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNw
cC5jcHA7IHBhdGggPSBXZWJEZWJ1Z2dlckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKKwkJQTVFNjE2NzIxODk0NTgxRjAwOUFERjUwIC8qIFdlYkRlYnVnZ2VyQWdlbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gV2ViRGVidWdnZXJBZ2VudC5oOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUY2RTE2QzEzMkVENDZFMDA4RURBRTMgLyogQXV0
b2NhcGl0YWxpemUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0
b2NhcGl0YWxpemUuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUY5RUY2RTEy
NjY3NTBEMDBGQ0NGNTIgLyogRGlza0ltYWdlQ2FjaGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEaXNrSW1hZ2VDYWNoZUlPUy5tbTsgc291cmNlVHJlZSA9
ICI8Z3JvdXA+IjsgfTsKIAkJQTVGOUVGNkYxMjY2NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFnZUNh
Y2hlSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERpc2tJbWFnZUNhY2hl
SU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMzMyOSw4ICsxMzMzMSw2IEBA
CiAJCUYzMzM1QkY2MTJFMDdEQzMwMEQzMzAxMSAvKiBJbnNwZWN0b3JDb25zb2xlQWdlbnQuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93
bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVjdG9yQ29uc29sZUFn
ZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjMzMzVCRjcxMkUwN0RDMzAw
RDMzMDExIC8qIEluc3BlY3RvckNvbnNvbGVBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnNwZWN0b3JDb25zb2xlQWdlbnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjMzRjAyODExMjA5NDdGMjAwRTU3NDNBIC8qIFNjcmlwdFByb2ZpbGUuY3BwICov
ID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZp
bGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0UHJvZmlsZS5jcHA7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUYzM0YwNTNCMTIwQjBEQTUwMEU1NzQzQSAvKiBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlGMzNGMDUzQzEyMEIwREE1MDBFNTc0M0EgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzNDRDNzEyMTEyNUI4MkMwMEYy
NkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OwogCQlGMzQ0Qzc1MjExMjk0RDlEMDBGMjZFRUUgLyogSW5zcGVjdG9yRnJvbnRlbmRD
bGllbnRMb2NhbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JG
cm9udGVuZENsaWVudExvY2FsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzNDRD
NzU3MTEyOTRGRjYwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25G
aWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtMTQ4MDUsOCArMTQ4
MDUsNiBAQAogCQkJCUYzRjVDRjEyMTJFRDgxQjMwMDg0QzU2OSAvKiBJbnNwZWN0b3JEYXRhYmFz
ZUluc3RydW1lbnRhdGlvbi5oICovLAogCQkJCTQxRjA2MjEzMEY1RjE5MjYwMEEwN0VBQyAvKiBJ
bnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcCAqLywKIAkJCQk0MUYwNjIxMjBGNUYxOTI2MDBB
MDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oICovLAotCQkJCUYzM0YwNTNCMTIw
QjBEQTUwMEU1NzQzQSAvKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCAqLywKLQkJCQlGMzNG
MDUzQzEyMEIwREE1MDBFNTc0M0EgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oICovLAogCQkJ
CTdBMjQ1ODc5MTAyMUVBRjQwMDBBMDBBQSAvKiBJbnNwZWN0b3JET01BZ2VudC5jcHAgKi8sCiAJ
CQkJN0EyNDU4N0ExMDIxRUFGNDAwMEEwMEFBIC8qIEluc3BlY3RvckRPTUFnZW50LmggKi8sCiAJ
CQkJRjNENEM0NzYxMkUwNzY2MzAwM0RBMTUwIC8qIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQu
Y3BwICovLApAQCAtMTQ4ODMsNiArMTQ4ODEsOCBAQAogCQkJCTlGQTM3RUYwMTE3MkZENDEwMEM0
Q0Q1NSAvKiBTY3JpcHRQcm9maWxlTm9kZS5pZGwgKi8sCiAJCQkJNzU1M0NGRTcxMDhGNDczRjAw
RUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5jcHAgKi8sCiAJCQkJNzU1M0NGRTYxMDhG
NDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oICovLAorCQkJCUE1RTYxNjcx
MTg5NDU4MUYwMDlBREY1MCAvKiBXZWJEZWJ1Z2dlckFnZW50LmNwcCAqLywKKwkJCQlBNUU2MTY3
MjE4OTQ1ODFGMDA5QURGNTAgLyogV2ViRGVidWdnZXJBZ2VudC5oICovLAogCQkJCUYzODIwODhF
MTQ3RDM1RjkwMDEwQkMwNiAvKiBXb3JrZXJDb25zb2xlQWdlbnQuY3BwICovLAogCQkJCUYzODIw
ODhGMTQ3RDM1RjkwMDEwQkMwNiAvKiBXb3JrZXJDb25zb2xlQWdlbnQuaCAqLywKIAkJCQlGMzQ3
NDJERTEzNDM2MzFGMDA1MzFCQzIgLyogV29ya2VyRGVidWdnZXJBZ2VudC5jcHAgKi8sCkBAIC0y
MzkzMiw3ICsyMzkzMiw2IEBACiAJCQkJN0FCMEIxQzExMjExQTYyMjAwQTc2OTQwIC8qIEluc3Bl
Y3RvckRhdGFiYXNlQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCUYzRjVDRjEzMTJFRDgxQjMw
MDg0QzU2OSAvKiBJbnNwZWN0b3JEYXRhYmFzZUluc3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMg
Ki8sCiAJCQkJNDFGMDYyMTQwRjVGMTkyNjAwQTA3RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVz
b3VyY2UuaCBpbiBIZWFkZXJzICovLAotCQkJCUYzM0YwNTNFMTIwQjBEQTUwMEU1NzQzQSAvKiBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk3QTI0NTg3QzEwMjFF
QUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUx
NjRFRDQ0MTgzMjA4QzcwMEVBOEZGMSAvKiBJREJTZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5oIGlu
IEhlYWRlcnMgKi8sCiAJCQkJRjNENEM0NzkxMkUwNzY2MzAwM0RBMTUwIC8qIEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICovLApAQCAtMjQ3MDQsNiArMjQ3MDMsNyBAQAog
CQkJCTE0MTE1QjUyMDlGODRCNzEwMENBNEZDMSAvKiBOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NTRGRTczMTBBMjI5N0JFMDA1OEQ3QUQgLyogTm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8s
CiAJCQkJODU0RkU3MzMwQTIyOTdCRTAwNThEN0FEIC8qIE5vZGVGaWx0ZXJDb25kaXRpb24uaCBp
biBIZWFkZXJzICovLAorCQkJCUE1RTYxNjc0MTg5NDU4MUYwMDlBREY1MCAvKiBXZWJEZWJ1Z2dl
ckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTRGRTczNTBBMjI5N0JFMDA1OEQ3QUQgLyog
Tm9kZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywKIAkJCQlBODE4NzIxQjA5NzdEM0MwMDA1ODI2
RDkgLyogTm9kZUxpc3QuaCBpbiBIZWFkZXJzICovLAogCQkJCTYzMTg5QUUzMEU4M0EzMzMwMDAx
MkU0MSAvKiBOb2RlUmFyZURhdGEuaCBpbiBIZWFkZXJzICovLApAQCAtMjY5MzMsNiArMjY5MzMs
NyBAQAogCQkJCTA3OEUwOTBCMTdEMTRDRUUwMDQyMEFBMSAvKiBSVENQZWVyQ29ubmVjdGlvbi5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDczMEQ3QzEyNDhGMEIzMDBEM0E5QzkgLyogRkVEaXNw
bGFjZW1lbnRNYXAuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJNDM1OEU4ODAxMzYwQTMxNzAwRTQ3
NDhDIC8qIEZFRHJvcFNoYWRvdy5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNUU2MTY3MzE4OTQ1
ODFGMDA5QURGNTAgLyogV2ViRGVidWdnZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1
MUQ3MTlGOTE4MTEwNkUwMDAxNkRDNTEgLyogUGFnZUdyb3VwSW5kZXhlZERhdGFiYXNlLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTg0NzMwRDdFMTI0OEYwQjMwMEQzQTlDOSAvKiBGRUZsb29kLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTg0ODAxOTU0MTA4QkFGQjMwMENCMkIxRiAvKiBGRUdhdXNz
aWFuQmx1ci5jcHAgaW4gU291cmNlcyAqLywKQEAgLTI3MjYxLDcgKzI3MjYyLDYgQEAKIAkJCQk0
QTlDQzgyMDE2QkY5QkI0MDBFQzY0NUEgLyogSW5zcGVjdG9yQ1NTT01XcmFwcGVycy5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QUIwQjFDMDEyMTFBNjIyMDBBNzY5NDAgLyogSW5zcGVjdG9yRGF0
YWJhc2VBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk0MUYwNjIxNTBGNUYxOTI2MDBBMDdF
QUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlG
MzNGMDUzRDEyMEIwREE1MDBFNTc0M0EgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQk3QTI0NTg3QjEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9N
QWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZDNEU0MEYxODdGODJFMTAwNDU4ODJDIC8q
IFNjcm9sbGluZ1RyZWVJT1MuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJRjNENEM0NzgxMkUwNzY2
MzAwM0RBMTUwIC8qIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8s
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUu
Y3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckFsbEluT25lLmNwcAppbmRl
eCAwNmMwZTAwLi5mNzI1MjIzIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQWxsSW5PbmUuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JBbGxJbk9uZS5jcHAKQEAgLTQ0LDcgKzQ0LDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JE
T01TdG9yYWdlQWdlbnQuY3BwIgogI2luY2x1ZGUgIkluc3BlY3RvckRhdGFiYXNlQWdlbnQuY3Bw
IgogI2luY2x1ZGUgIkluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuY3BwIgotI2luY2x1ZGUgIklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xp
ZW50TG9jYWwuY3BwIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kSG9zdC5jcHAiCiAjaW5j
bHVkZSAiSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuY3BwIgpAQCAtNzUsNiArNzQsNyBAQAog
I2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5jcHAiCiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNr
LmNwcCIKICNpbmNsdWRlICJUaW1lbGluZVJlY29yZEZhY3RvcnkuY3BwIgorI2luY2x1ZGUgIldl
YkRlYnVnZ2VyQWdlbnQuY3BwIgogI2luY2x1ZGUgIldvcmtlckNvbnNvbGVBZ2VudC5jcHAiCiAj
aW5jbHVkZSAiV29ya2VyRGVidWdnZXJBZ2VudC5jcHAiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVj
dG9yQ29udHJvbGxlci5jcHAiCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yQ29udHJvbGxlci5jcHAKaW5kZXggNGZmMTM1ZS4uNDMxYmFhZCAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcApAQCAtNDUsNyArNDUs
NiBAQAogI2luY2x1ZGUgIkluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEYXRhYmFzZUFn
ZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIklu
c3BlY3RvckZyb250ZW5kQ2xpZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySGVhcFByb2ZpbGVy
QWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oIgpAQCAtMTQ3LDcg
KzE0Niw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSYg
cGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0b3JDCiAgICAgbV9hZ2VudHMuYXBwZW5kKHN0
ZDo6bW92ZShjb25zb2xlQWdlbnRQdHIpKTsKIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVH
R0VSKQotICAgIGF1dG8gZGVidWdnZXJBZ2VudFB0ciA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZURl
YnVnZ2VyQWdlbnQ+KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgcGFnZUFnZW50LCBtX2lu
amVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSwgbV9vdmVybGF5LmdldCgpKTsKKyAgICBhdXRvIGRl
YnVnZ2VyQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5pcXVlPFBhZ2VEZWJ1Z2dlckFnZW50PihtX2lu
amVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSwgbV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBw
YWdlQWdlbnQsIG1fb3ZlcmxheS5nZXQoKSk7CiAgICAgbV9kZWJ1Z2dlckFnZW50ID0gZGVidWdn
ZXJBZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptb3ZlKGRlYnVnZ2Vy
QWdlbnRQdHIpKTsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250
cm9sbGVyLmgKaW5kZXggNDA1ZTY5My4uODFlZjgxNiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5oCkBAIC00NCw5ICs0NCwxMCBAQAogCiBuYW1l
c3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIEluc3BlY3RvckFnZW50OwotY2xhc3MgSW5zcGVjdG9y
T2JqZWN0OwotY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOwogY2xhc3MgSW5zcGVjdG9y
QmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OworY2xhc3Mg
SW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOworY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwogfQogCiBu
YW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01OCw3ICs1OSw2IEBAIGNsYXNzIEluc3BlY3RvckFwcGxp
Y2F0aW9uQ2FjaGVBZ2VudDsKIGNsYXNzIEluc3BlY3RvckNsaWVudDsKIGNsYXNzIEluc3BlY3Rv
ckRPTUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudDsKLWNsYXNzIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JGcm9udGVuZENsaWVudDsKIGNsYXNz
IEluc3BlY3Rvck1lbW9yeUFnZW50OwogY2xhc3MgSW5zcGVjdG9yT3ZlcmxheTsKQEAgLTE1Niw3
ICsxNTYsNyBAQCBwcml2YXRlOgogICAgIEluc3BlY3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7
CiAgICAgSW5zcGVjdG9yTWVtb3J5QWdlbnQqIG1fbWVtb3J5QWdlbnQ7CiAjaWYgRU5BQkxFKEpB
VkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogbV9kZWJ1Z2dl
ckFnZW50OworICAgIEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2VudCogbV9kZWJ1Z2dl
ckFnZW50OwogICAgIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQqIG1fZG9tRGVidWdnZXJBZ2Vu
dDsKICAgICBJbnNwZWN0b3JQcm9maWxlckFnZW50KiBtX3Byb2ZpbGVyQWdlbnQ7CiAjZW5kaWYK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50LmNwcAppbmRleCA5N2IyOTFkLi43Y2M4ZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwCkBAIC0yOSwx
NCArMjksMTIgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoSU5T
UEVDVE9SKSAmJiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKLQogI2luY2x1ZGUgIkluc3Bl
Y3RvckRPTURlYnVnZ2VyQWdlbnQuaCIKIAorI2lmIEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJM
RShKQVZBU0NSSVBUX0RFQlVHR0VSKQorCiAjaW5jbHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdl
bnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJJ
bnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJzLmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGlu
Z0FnZW50cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JE
T01EZWJ1Z2dlckFnZW50LmgKaW5kZXggYzMyMzc4Yy4uNGRkNzkyYyAxMDA2NDQKLS0tIGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oCkBAIC0z
Myw5ICszMyw5IEBACiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxF
KElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKICNpbmNs
dWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJCYWNr
ZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuaD4KICNpbmNsdWRlIDx3dGYvSGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9Q
YXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1JlZkNvdW50ZWQuaD4KQEAgLTQ5LDE2ICs0OSwx
NSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEVsZW1lbnQ7CiBjbGFzcyBJbnNwZWN0
b3JET01BZ2VudDsKLWNsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBJbnN0cnVt
ZW50aW5nQWdlbnRzOwogY2xhc3MgTm9kZTsKIAogdHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7
CiAKLWNsYXNzIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdl
bnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6TGlzdGVuZXIsIHB1YmxpYyBJ
bnNwZWN0b3I6Okluc3BlY3RvckRPTURlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsK
K2NsYXNzIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRC
YXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpMaXN0ZW5lciwg
cHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yRE9NRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlckhh
bmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQpOwogcHVibGljOgotICAgIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGlu
Z0FnZW50cyosIEluc3BlY3RvckRPTUFnZW50KiwgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCopOwor
ICAgIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3Bl
Y3RvckRPTUFnZW50KiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Kik7CiAgICAg
dmlydHVhbCB+SW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudCgpOwogCiAgICAgLy8gRE9NRGVidWdn
ZXIgQVBJCkBAIC04Niw3ICs4NSw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzY2Fy
ZEFnZW50KCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Ci0gICAgLy8gSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6TGlzdGVuZXIgaW1wbGVtZW50YXRpb24uCisgICAgLy8gSW5zcGVjdG9yOjpJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpMaXN0ZW5lciBpbXBsZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIHZv
aWQgZGVidWdnZXJXYXNFbmFibGVkKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRlYnVn
Z2VyV2FzRGlzYWJsZWQoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3RlcEludG8oKSBv
dmVycmlkZTsKQEAgLTEwMyw3ICsxMDIsNyBAQCBwcml2YXRlOgogICAgIHZvaWQgY2xlYXIoKTsK
IAogICAgIEluc3BlY3RvckRPTUFnZW50KiBtX2RvbUFnZW50OwotICAgIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQqIG1fZGVidWdnZXJBZ2VudDsKKyAgICBJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVn
Z2VyQWdlbnQqIG1fZGVidWdnZXJBZ2VudDsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAg
IEhhc2hNYXA8Tm9kZSosIHVpbnQzMl90PiBtX2RvbUJyZWFrcG9pbnRzOwogICAgIEhhc2hTZXQ8
U3RyaW5nPiBtX2V2ZW50TGlzdGVuZXJCcmVha3BvaW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKaW5kZXggODAzY2E0
ZC4uZjQ2NWY0MSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTI5LDExICsyOSwxMCBAQAogKi8KIAogI2luY2x1
ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKElOU1BFQ1RPUikKLQogI2luY2x1ZGUgIkluc3Bl
Y3Rvckluc3RydW1lbnRhdGlvbi5oIgogCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKwogI2luY2x1
ZGUgIkNTU1J1bGUuaCIKICNpbmNsdWRlICJDU1NTdHlsZVJ1bGUuaCIKICNpbmNsdWRlICJDb25z
b2xlQVBJVHlwZXMuaCIKQEAgLTUyLDcgKzUxLDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JET01E
ZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmgiCiAj
aW5jbHVkZSAiSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckRl
YnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oIgog
I2luY2x1ZGUgIkluc3BlY3RvckxheWVyVHJlZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9y
UGFnZUFnZW50LmgiCkBAIC03Niw2ICs3NCw3IEBACiAjaW5jbHVkZSAiV29ya2VyUnVudGltZUFn
ZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFkLmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVl
c3QuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQu
aD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFzLmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0
cmluZy5oPgogCkBAIC04ODQsMTQgKzg4MywyMyBAQCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRh
dGlvbjo6ZGlkV3JpdGVIVE1MSW1wbChjb25zdCBJbnNwZWN0b3JJbnN0cnVtZW50YXRpb25Dbwog
ICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRXcml0ZUhUTUwoZW5kTGluZSk7CiB9CiAKKy8vIEph
dmFTY3JpcHRDb3JlIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgc2hvdWxkIGtub3cgQ29uc29sZSBN
ZXNzYWdlVHlwZXMuCitzdGF0aWMgYm9vbCBpc0NvbnNvbGVBc3NlcnRNZXNzYWdlKE1lc3NhZ2VT
b3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBlKQoreworICAgIHJldHVybiBzb3VyY2UgPT0g
Q29uc29sZUFQSU1lc3NhZ2VTb3VyY2UgJiYgdHlwZSA9PSBBc3NlcnRNZXNzYWdlVHlwZTsKK30K
KwogLy8gRklYTUU6IERyb3AgdGhpcyBvbmNlIHdlIG5vIGxvbmdlciBnZW5lcmF0ZSBzdGFja3Mg
b3V0c2lkZSBvZiBJbnNwZWN0b3IuCiB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRk
TWVzc2FnZVRvQ29uc29sZUltcGwoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0Fn
ZW50cywgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1lc3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZl
bCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdlLCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFj
az4gY2FsbFN0YWNrLCB1bnNpZ25lZCBsb25nIHJlcXVlc3RJZGVudGlmaWVyKQogewogICAgIGlm
IChJbnNwZWN0b3JDb25zb2xlQWdlbnQqIGNvbnNvbGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2Vu
dHMtPmluc3BlY3RvckNvbnNvbGVBZ2VudCgpKQogICAgICAgICBjb25zb2xlQWdlbnQtPmFkZE1l
c3NhZ2VUb0NvbnNvbGUoc291cmNlLCB0eXBlLCBsZXZlbCwgbWVzc2FnZSwgY2FsbFN0YWNrLCBy
ZXF1ZXN0SWRlbnRpZmllcik7CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAg
aWYgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5n
QWdlbnRzLT5pbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkpCi0gICAgICAgIGRlYnVnZ2VyQWdlbnQt
PmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCB0eXBlKTsKKyAgICAvLyBGSVhNRTogVGhpcyBz
aG91bGQganVzdCBwYXNzIHRoZSBtZXNzYWdlIG9uIHRvIHRoZSBkZWJ1Z2dlciBhZ2VudC4gSmF2
YVNjcmlwdENvcmUgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCBzaG91bGQga25vdyBDb25zb2xlIE1l
c3NhZ2VUeXBlcy4KKyAgICBpZiAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2Vu
dCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKSkgeworICAg
ICAgICBpZiAoaXNDb25zb2xlQXNzZXJ0TWVzc2FnZShzb3VyY2UsIHR5cGUpKQorICAgICAgICAg
ICAgZGVidWdnZXJBZ2VudC0+aGFuZGxlQ29uc29sZUFzc2VydCgpOworICAgIH0KICNlbmRpZgog
fQogCkBAIC05MDAsOCArOTA4LDExIEBAIHZvaWQgSW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjph
ZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0CiAgICAgaWYg
KEluc3BlY3RvckNvbnNvbGVBZ2VudCogY29uc29sZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50
cy0+aW5zcGVjdG9yQ29uc29sZUFnZW50KCkpCiAgICAgICAgIGNvbnNvbGVBZ2VudC0+YWRkTWVz
c2FnZVRvQ29uc29sZShzb3VyY2UsIHR5cGUsIGxldmVsLCBtZXNzYWdlLCBzdGF0ZSwgYXJndW1l
bnRzLCByZXF1ZXN0SWRlbnRpZmllcik7CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
Ci0gICAgaWYgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVt
ZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCkpCi0gICAgICAgIGRlYnVnZ2Vy
QWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCB0eXBlKTsKKyAgICAvLyBGSVhNRTog
VGhpcyBzaG91bGQganVzdCBwYXNzIHRoZSBtZXNzYWdlIG9uIHRvIHRoZSBkZWJ1Z2dlciBhZ2Vu
dC4gSmF2YVNjcmlwdENvcmUgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCBzaG91bGQga25vdyBDb25z
b2xlIE1lc3NhZ2VUeXBlcy4KKyAgICBpZiAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdn
ZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKSkg
eworICAgICAgICBpZiAoaXNDb25zb2xlQXNzZXJ0TWVzc2FnZShzb3VyY2UsIHR5cGUpKQorICAg
ICAgICAgICAgZGVidWdnZXJBZ2VudC0+aGFuZGxlQ29uc29sZUFzc2VydCgpOworICAgIH0KICNl
bmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVu
dGluZ0FnZW50cy5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2Vu
dHMuaAppbmRleCBiNWM4Yzg1Li5hZmFiY2U2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKQEAgLTM5LDYgKzM5LDcgQEAKIAogbmFtZXNwYWNl
IEluc3BlY3RvciB7CiBjbGFzcyBJbnNwZWN0b3JBZ2VudDsKK2NsYXNzIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ7CiB9CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKQEAgLTUxLDcgKzUyLDYgQEAgY2xh
c3MgSW5zcGVjdG9yRE9NQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50Owog
Y2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VB
Z2VudDsKLWNsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JIZWFw
UHJvZmlsZXJBZ2VudDsKIGNsYXNzIEluc3BlY3RvckxheWVyVHJlZUFnZW50OwogY2xhc3MgSW5z
cGVjdG9yUGFnZUFnZW50OwpAQCAtMTE3LDggKzExNyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNl
dEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudChJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hl
QWdlbnQqIGFnZW50KSB7IG1faW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50ID0gYWdlbnQ7
IH0KIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQqIGluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ7IH0KLSAgICB2b2lkIHNldEluc3BlY3RvckRlYnVnZ2VyQWdlbnQo
SW5zcGVjdG9yRGVidWdnZXJBZ2VudCogYWdlbnQpIHsgbV9pbnNwZWN0b3JEZWJ1Z2dlckFnZW50
ID0gYWdlbnQ7IH0KKyAgICBJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckRlYnVnZ2VyQWdl
bnQ7IH0KKyAgICB2b2lkIHNldEluc3BlY3RvckRlYnVnZ2VyQWdlbnQoSW5zcGVjdG9yOjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KiBhZ2VudCkgeyBtX2luc3BlY3RvckRlYnVnZ2VyQWdlbnQgPSBh
Z2VudDsgfQogCiAgICAgUGFnZURlYnVnZ2VyQWdlbnQqIHBhZ2VEZWJ1Z2dlckFnZW50KCkgY29u
c3QgeyByZXR1cm4gbV9wYWdlRGVidWdnZXJBZ2VudDsgfQogICAgIHZvaWQgc2V0UGFnZURlYnVn
Z2VyQWdlbnQoUGFnZURlYnVnZ2VyQWdlbnQqIGFnZW50KSB7IG1fcGFnZURlYnVnZ2VyQWdlbnQg
PSBhZ2VudDsgfQpAQCAtMTY3LDcgKzE2Nyw3IEBAIHByaXZhdGU6CiAjZW5kaWYKICAgICBJbnNw
ZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQqIG1faW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFn
ZW50OwogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQqIG1faW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKKyAgICBJbnNwZWN0b3I6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQqIG1faW5zcGVjdG9yRGVidWdnZXJBZ2VudDsKICAgICBQYWdlRGVi
dWdnZXJBZ2VudCogbV9wYWdlRGVidWdnZXJBZ2VudDsKICAgICBJbnNwZWN0b3JET01EZWJ1Z2dl
ckFnZW50KiBtX2luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQ7CiAgICAgSW5zcGVjdG9yUHJvZmls
ZXJBZ2VudCogbV9pbnNwZWN0b3JQcm9maWxlckFnZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggZDAxNTg1YS4uNmIzOGYzYSAxMDA2
NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAor
KysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvUGFnZURlYnVnZ2VyQWdlbnQuY3BwCkBAIC0y
OSwxMSArMjksMTEgQEAKICAqLwogCiAjaW5jbHVkZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElOU1BFQ1RPUikKLQogI2luY2x1ZGUgIlBh
Z2VEZWJ1Z2dlckFnZW50LmgiCiAKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYg
RU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUgIkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVk
ZSAiSW5zcGVjdG9yT3ZlcmxheS5oIgogI2luY2x1ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgog
I2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMuaCIKQEAgLTQ4LDI5ICs0OCw0NiBAQCB1c2lu
ZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKLVBhZ2VEZWJ1
Z2dlckFnZW50OjpQYWdlRGVidWdnZXJBZ2VudChJbnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVt
ZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCwgSW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJs
YXkpCi0gICAgOiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIGlu
amVjdGVkU2NyaXB0TWFuYWdlcikKK1BhZ2VEZWJ1Z2dlckFnZW50OjpQYWdlRGVidWdnZXJBZ2Vu
dChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdl
QWdlbnQsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCisgICAgOiBXZWJEZWJ1Z2dlckFnZW50
KGluamVjdGVkU2NyaXB0TWFuYWdlciwgaW5zdHJ1bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFn
ZUFnZW50KHBhZ2VBZ2VudCkKICAgICAsIG1fb3ZlcmxheShvdmVybGF5KQogewogfQogCi1QYWdl
RGVidWdnZXJBZ2VudDo6flBhZ2VEZWJ1Z2dlckFnZW50KCkKLXsKLX0KLQogdm9pZCBQYWdlRGVi
dWdnZXJBZ2VudDo6ZW5hYmxlKCkKIHsKLSAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjplbmFi
bGUoKTsKKyAgICBXZWJEZWJ1Z2dlckFnZW50OjplbmFibGUoKTsKICAgICBtX2luc3RydW1lbnRp
bmdBZ2VudHMtPnNldFBhZ2VEZWJ1Z2dlckFnZW50KHRoaXMpOwogfQogCiB2b2lkIFBhZ2VEZWJ1
Z2dlckFnZW50OjpkaXNhYmxlKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkKIHsKLSAgICBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpkaXNhYmxlKGlzQmVpbmdEZXN0cm95ZWQpOworICAgIFdlYkRlYnVn
Z2VyQWdlbnQ6OmRpc2FibGUoaXNCZWluZ0Rlc3Ryb3llZCk7CiAgICAgbV9pbnN0cnVtZW50aW5n
QWdlbnRzLT5zZXRQYWdlRGVidWdnZXJBZ2VudChudWxscHRyKTsKIH0KIAorU3RyaW5nIFBhZ2VE
ZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQoY29uc3QgU2NyaXB0JiBzY3JpcHQp
Cit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNvdXJjZU1hcEhUVFBIZWFkZXIs
IChBU0NJSUxpdGVyYWwoIlNvdXJjZU1hcCIpKSk7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIHNvdXJjZU1hcEhUVFBIZWFkZXJEZXByZWNhdGVkLCAoQVNDSUlMaXRlcmFsKCJYLVNv
dXJjZU1hcCIpKSk7CisKKyAgICBpZiAoIXNjcmlwdC51cmwuaXNFbXB0eSgpKSB7CisgICAgICAg
IENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IG1fcGFnZUFnZW50LT5jYWNoZWRSZXNvdXJjZSht
X3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCksIFVSTChQYXJzZWRVUkxTdHJpbmcsIHNjcmlwdC51cmwp
KTsKKyAgICAgICAgaWYgKHJlc291cmNlKSB7CisgICAgICAgICAgICBTdHJpbmcgc291cmNlTWFw
SGVhZGVyID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxkKHNvdXJjZU1hcEhU
VFBIZWFkZXIpOworICAgICAgICAgICAgaWYgKCFzb3VyY2VNYXBIZWFkZXIuaXNFbXB0eSgpKQor
ICAgICAgICAgICAgICAgIHJldHVybiBzb3VyY2VNYXBIZWFkZXI7CisKKyAgICAgICAgICAgIHNv
dXJjZU1hcEhlYWRlciA9IHJlc291cmNlLT5yZXNwb25zZSgpLmh0dHBIZWFkZXJGaWVsZChzb3Vy
Y2VNYXBIVFRQSGVhZGVyRGVwcmVjYXRlZCk7CisgICAgICAgICAgICBpZiAoIXNvdXJjZU1hcEhl
YWRlci5pc0VtcHR5KCkpCisgICAgICAgICAgICAgICAgcmV0dXJuIHNvdXJjZU1hcEhlYWRlcjsK
KyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVybiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpz
b3VyY2VNYXBVUkxGb3JTY3JpcHQoc2NyaXB0KTsKK30KKwogdm9pZCBQYWdlRGVidWdnZXJBZ2Vu
dDo6c3RhcnRMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcigpCiB7CiAgICAgc2NyaXB0RGVidWdT
ZXJ2ZXIoKS5hZGRMaXN0ZW5lcih0aGlzLCBtX3BhZ2VBZ2VudC0+cGFnZSgpKTsKQEAgLTEwNyw5
ICsxMjQsMTEgQEAgSW5qZWN0ZWRTY3JpcHQgUGFnZURlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2Ny
aXB0Rm9yRXZhbChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcKICAgICAgICAgSlNDOjpFeGVjU3Rh
dGUqIHNjcmlwdFN0YXRlID0gbWFpbldvcmxkRXhlY1N0YXRlKG1fcGFnZUFnZW50LT5tYWluRnJh
bWUoKSk7CiAgICAgICAgIHJldHVybiBpbmplY3RlZFNjcmlwdE1hbmFnZXIoKS0+aW5qZWN0ZWRT
Y3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwogICAgIH0KKwogICAgIEluamVjdGVkU2NyaXB0IGluamVj
dGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKCktPmluamVjdGVkU2NyaXB0Rm9ySWQo
KmV4ZWN1dGlvbkNvbnRleHRJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUo
KSkKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIkV4ZWN1dGlvbiBjb250ZXh0IHdpdGggZ2l2ZW4g
aWQgbm90IGZvdW5kLiI7CisgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiRXhl
Y3V0aW9uIGNvbnRleHQgd2l0aCBnaXZlbiBpZCBub3QgZm91bmQuIik7CisKICAgICByZXR1cm4g
aW5qZWN0ZWRTY3JpcHQ7CiB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rv
ci9QYWdlRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1
Z2dlckFnZW50LmgKaW5kZXggYmJhZjNkNS4uMDFlM2FkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKQEAgLTMzLDIyICszMywyMyBAQAogCiAjaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYmIEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNs
dWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiUGFnZVNjcmlwdERlYnVn
U2VydmVyLmgiCisjaW5jbHVkZSAiV2ViRGVidWdnZXJBZ2VudC5oIgogCiBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAKIGNsYXNzIEluc3BlY3Rvck92ZXJsYXk7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdl
bnQ7CitjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgUGFnZTsKIGNsYXNzIFBhZ2VT
Y3JpcHREZWJ1Z1NlcnZlcjsKIAotY2xhc3MgUGFnZURlYnVnZ2VyQWdlbnQgZmluYWwgOiBwdWJs
aWMgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCB7CitjbGFzcyBQYWdlRGVidWdnZXJBZ2VudCBmaW5h
bCA6IHB1YmxpYyBXZWJEZWJ1Z2dlckFnZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQ
YWdlRGVidWdnZXJBZ2VudCk7CiAgICAgV1RGX01BS0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6
Ci0gICAgUGFnZURlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvclBh
Z2VBZ2VudCosIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiwgSW5zcGVjdG9yT3Zl
cmxheSopOwotICAgIHZpcnR1YWwgflBhZ2VEZWJ1Z2dlckFnZW50KCk7CisgICAgUGFnZURlYnVn
Z2VyQWdlbnQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnN0cnVtZW50aW5n
QWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50KiwgSW5zcGVjdG9yT3ZlcmxheSopOworICAgIHZp
cnR1YWwgflBhZ2VEZWJ1Z2dlckFnZW50KCkgeyB9CiAKICAgICB2b2lkIGRpZENsZWFyTWFpbkZy
YW1lV2luZG93T2JqZWN0KCk7CiAKQEAgLTU2LDYgKzU3LDggQEAgcHJvdGVjdGVkOgogICAgIHZp
cnR1YWwgdm9pZCBlbmFibGUoKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShi
b29sIGlzQmVpbmdEZXN0cm95ZWQpIG92ZXJyaWRlOwogCisgICAgdmlydHVhbCBTdHJpbmcgc291
cmNlTWFwVVJMRm9yU2NyaXB0KGNvbnN0IFNjcmlwdCYpIG92ZXJyaWRlOworCiBwcml2YXRlOgog
ICAgIHZpcnR1YWwgdm9pZCBzdGFydExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKCkgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcihib29s
IGlzQmVpbmdEZXN0cm95ZWQpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL1dlYkRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L1dlYkRlYnVnZ2VyQWdlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAu
LjkyYWY1YTIKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2Vi
RGVidWdnZXJBZ2VudC5jcHAKQEAgLTAsMCArMSw1OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykg
MjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRp
b24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Cisg
KiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5n
IGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNl
IGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlz
IGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4g
UmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBj
b3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBm
b2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90
aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJ
UyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisg
KiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlU
RUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQg
RklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4g
Tk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBG
T1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExB
UlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQg
VE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NT
IE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikg
SE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhF
UiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBO
RUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNF
CisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZ
IE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJX
ZWJEZWJ1Z2dlckFnZW50LmgiCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorI2lmIEVOQUJMRShK
QVZBU0NSSVBUX0RFQlVHR0VSKQorCisjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgor
Cit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOworCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dl
YkRlYnVnZ2VyQWdlbnQ6OldlYkRlYnVnZ2VyQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBp
bmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdB
Z2VudHMpCisgICAgOiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KGluamVjdGVkU2NyaXB0TWFuYWdl
cikKKyAgICAsIG1faW5zdHJ1bWVudGluZ0FnZW50cyhpbnN0cnVtZW50aW5nQWdlbnRzKQorewor
fQorCit2b2lkIFdlYkRlYnVnZ2VyQWdlbnQ6OmVuYWJsZSgpCit7CisgICAgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6ZW5hYmxlKCk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50KHRoaXMpOworfQorCit2b2lkIFdlYkRlYnVnZ2VyQWdlbnQ6OmRp
c2FibGUoYm9vbCBpc0JlaW5nRGVzdHJveWVkKQoreworICAgIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmRpc2FibGUoaXNCZWluZ0Rlc3Ryb3llZCk7CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRz
LT5zZXRJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KG51bGxwdHIpOworfQorCit9IC8vIG5hbWVzcGFj
ZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyNlbmRp
ZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1dlYkRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJEZWJ1
Z2dlckFnZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uNWM2MTczZgot
LS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJEZWJ1Z2dlckFn
ZW50LmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJ
bmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
KyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9S
IElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQor
ICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1Ig
QSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hB
TEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVD
VCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNF
UVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9D
VVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFU
QSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVT
RUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFD
VCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9S
IE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElT
IFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFN
QUdFLgorICovCisKKyNpZm5kZWYgV2ViRGVidWdnZXJBZ2VudF9oCisjZGVmaW5lIFdlYkRlYnVn
Z2VyQWdlbnRfaAorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyNpZiBFTkFCTEUoSkFWQVNDUklQ
VF9ERUJVR0dFUikKKworI2luY2x1ZGUgPGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5oPgorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKK2NsYXNzIEluc3RydW1lbnRpbmdB
Z2VudHM7Cit0eXBlZGVmIFN0cmluZyBFcnJvclN0cmluZzsKKworY2xhc3MgV2ViRGVidWdnZXJB
Z2VudCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQgeworICAgIFdU
Rl9NQUtFX05PTkNPUFlBQkxFKFdlYkRlYnVnZ2VyQWdlbnQpOworICAgIFdURl9NQUtFX0ZBU1Rf
QUxMT0NBVEVEOworcHVibGljOgorICAgIFdlYkRlYnVnZ2VyQWdlbnQoSW5zcGVjdG9yOjpJbmpl
Y3RlZFNjcmlwdE1hbmFnZXIqLCBJbnN0cnVtZW50aW5nQWdlbnRzKik7CisgICAgdmlydHVhbCB+
V2ViRGVidWdnZXJBZ2VudCgpIHsgfQorCitwcm90ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGVu
YWJsZSgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKGJvb2wgaXNCZWluZ0Rl
c3Ryb3llZCkgb3ZlcnJpZGU7CisKKyAgICBJbnN0cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1l
bnRpbmdBZ2VudHM7Cit9OworCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBF
TkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQor
CisjZW5kaWYgLy8gIWRlZmluZWQoV2ViRGVidWdnZXJBZ2VudF9oKQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwCmluZGV4IGY0YzRjZjAuLjNh
OGJhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dl
ckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJB
Z2VudC5jcHAKQEAgLTkyLDggKzkyLDggQEAgcHJpdmF0ZToKIAogY29uc3QgY2hhciogV29ya2Vy
RGVidWdnZXJBZ2VudDo6ZGVidWdnZXJUYXNrTW9kZSA9ICJkZWJ1Z2dlciI7CiAKLVdvcmtlckRl
YnVnZ2VyQWdlbnQ6OldvcmtlckRlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5z
dHJ1bWVudGluZ0FnZW50cywgV29ya2VyR2xvYmFsU2NvcGUqIGluc3BlY3RlZFdvcmtlckdsb2Jh
bFNjb3BlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAg
ICA6IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQoaW5zdHJ1bWVudGluZ0FnZW50cywgaW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKQorV29ya2VyRGVidWdnZXJBZ2VudDo6V29ya2VyRGVidWdnZXJBZ2VudChJ
bmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlciwgSW5zdHJ1bWVudGlu
Z0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgV29ya2VyR2xvYmFsU2NvcGUqIGluc3BlY3Rl
ZFdvcmtlckdsb2JhbFNjb3BlKQorICAgIDogV2ViRGVidWdnZXJBZ2VudChpbmplY3RlZFNjcmlw
dE1hbmFnZXIsIGluc3RydW1lbnRpbmdBZ2VudHMpCiAgICAgLCBtX3NjcmlwdERlYnVnU2VydmVy
KGluc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlLCBXb3JrZXJEZWJ1Z2dlckFnZW50OjpkZWJ1Z2dl
clRhc2tNb2RlKQogICAgICwgbV9pbnNwZWN0ZWRXb3JrZXJHbG9iYWxTY29wZShpbnNwZWN0ZWRX
b3JrZXJHbG9iYWxTY29wZSkKIHsKQEAgLTE0MCw5ICsxNDAsMTAgQEAgV29ya2VyU2NyaXB0RGVi
dWdTZXJ2ZXImIFdvcmtlckRlYnVnZ2VyQWdlbnQ6OnNjcmlwdERlYnVnU2VydmVyKCkKIEluamVj
dGVkU2NyaXB0IFdvcmtlckRlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJv
clN0cmluZyogZXJyb3IsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkKQogewogICAgIGlm
IChleGVjdXRpb25Db250ZXh0SWQpIHsKLSAgICAgICAgKmVycm9yID0gIkV4ZWN1dGlvbiBjb250
ZXh0IGlkIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHdvcmtlcnMgYXMgdGhlcmUgaXMgb25seSBvbmUg
ZXhlY3V0aW9uIGNvbnRleHQuIjsKKyAgICAgICAgKmVycm9yID0gQVNDSUlMaXRlcmFsKCJFeGVj
dXRpb24gY29udGV4dCBpZCBpcyBub3Qgc3VwcG9ydGVkIGZvciB3b3JrZXJzIGFzIHRoZXJlIGlz
IG9ubHkgb25lIGV4ZWN1dGlvbiBjb250ZXh0LiIpOwogICAgICAgICByZXR1cm4gSW5qZWN0ZWRT
Y3JpcHQoKTsKICAgICB9CisKICAgICBKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSBleGVj
U3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUobV9pbnNwZWN0ZWRXb3JrZXJHbG9iYWxTY29wZSk7
CiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFuYWdlcigpLT5pbmplY3RlZFNjcmlwdEZvcihz
Y3JpcHRTdGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29y
a2VyRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVn
Z2VyQWdlbnQuaAppbmRleCAwOGIwMzJiLi5iMDg2MDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmgKQEAgLTMyLDcgKzMyLDggQEAKICNkZWZp
bmUgV29ya2VyRGVidWdnZXJBZ2VudF9oCiAKICNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dF
UikgJiYgRU5BQkxFKElOU1BFQ1RPUikKLSNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmgiCisKKyNpbmNsdWRlICJXZWJEZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyU2Ny
aXB0RGVidWdTZXJ2ZXIuaCIKIAogbmFtZXNwYWNlIFdlYkNvcmUgewpAQCAtNDAsMTEgKzQxLDEx
IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNzIFdvcmtlckdsb2JhbFNjb3BlOwogY2xhc3Mg
V29ya2VyVGhyZWFkOwogCi1jbGFzcyBXb3JrZXJEZWJ1Z2dlckFnZW50IGZpbmFsIDogcHVibGlj
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgeworY2xhc3MgV29ya2VyRGVidWdnZXJBZ2VudCBmaW5h
bCA6IHB1YmxpYyBXZWJEZWJ1Z2dlckFnZW50IHsKICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShX
b3JrZXJEZWJ1Z2dlckFnZW50KTsKICAgICBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1Ymxp
YzoKLSAgICBXb3JrZXJEZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqLCBXb3JrZXJH
bG9iYWxTY29wZSosIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CisgICAgV29y
a2VyRGVidWdnZXJBZ2VudChJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciosIEluc3Ry
dW1lbnRpbmdBZ2VudHMqLCBXb3JrZXJHbG9iYWxTY29wZSopOwogICAgIHZpcnR1YWwgfldvcmtl
ckRlYnVnZ2VyQWdlbnQoKTsKIAogICAgIHN0YXRpYyBjb25zdCBjaGFyKiBkZWJ1Z2dlclRhc2tN
b2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCmluZGV4IDgwODkxYjYuLjIxZDM5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAg
LTkyLDcgKzkyLDcgQEAgV29ya2VySW5zcGVjdG9yQ29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9y
Q29udHJvbGxlcihXb3JrZXJHbG9iYWxTY29wZSYgd29ya2VyR2wKIAogICAgIGF1dG8gY29uc29s
ZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3JrZXJDb25zb2xlQWdlbnQ+KG1faW5zdHJ1bWVu
dGluZ0FnZW50cy5nZXQoKSwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCkpOwogI2lmIEVO
QUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIGF1dG8gZGVidWdnZXJBZ2VudCA9IHN0ZDo6
bWFrZV91bmlxdWU8V29ya2VyRGVidWdnZXJBZ2VudD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdl
dCgpLCAmd29ya2VyR2xvYmFsU2NvcGUsIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKTsK
KyAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBzdGQ6Om1ha2VfdW5pcXVlPFdvcmtlckRlYnVnZ2Vy
QWdlbnQ+KG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBtX2luc3RydW1lbnRpbmdBZ2Vu
dHMuZ2V0KCksICZ3b3JrZXJHbG9iYWxTY29wZSk7CiAgICAgbV9ydW50aW1lQWdlbnQtPnNldFNj
cmlwdERlYnVnU2VydmVyKCZkZWJ1Z2dlckFnZW50LT5zY3JpcHREZWJ1Z1NlcnZlcigpKTsKICAg
ICBtX2FnZW50cy5hcHBlbmQoc3RkOjptb3ZlKGRlYnVnZ2VyQWdlbnQpKTsKIAo=
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>222239</attachid>
            <date>2014-01-25 16:25:36 -0800</date>
            <delta_ts>2014-01-25 16:33:04 -0800</delta_ts>
            <desc>[PATCH] Proposed Fix</desc>
            <filename>debugger2.patch</filename>
            <type>text/plain</type>
            <size>132485</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">Y29tbWl0IGI1ZmQzMThiMjE3NTFkZGNmN2Q4M2FlZmI0OTM1ZjkwNzgyZDJiNzkKQXV0aG9yOiBK
b3NlcGggUGVjb3Jhcm8gPHBlY29yYXJvQGFwcGxlLmNvbT4KRGF0ZTogICBTYXQgSmFuIDI1IDE2
OjIxOjMxIDIwMTQgLTA4MDAKCiAgICBQUk9HUkVTUzogRGVidWdnZXJBZ2VudAoKZGlmZiAtLWdp
dCBhL0xheW91dFRlc3RzL0NoYW5nZUxvZyBiL0xheW91dFRlc3RzL0NoYW5nZUxvZwppbmRleCBl
MmY1ZWNhLi5lM2MwNmNiIDEwMDY0NAotLS0gYS9MYXlvdXRUZXN0cy9DaGFuZ2VMb2cKKysrIGIv
TGF5b3V0VGVzdHMvQ2hhbmdlTG9nCkBAIC0xLDMgKzEsMjEgQEAKKzIwMTQtMDEtMjUgIEpvc2Vw
aCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KKworICAgICAgICBXZWIgSW5zcGVjdG9y
OiBNb3ZlIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgaW50byBKYXZhU2NyaXB0Q29yZQorICAgICAg
ICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTI3NjI5CisKKyAgICAg
ICAgUmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgQWRkIGEgdGVzdCB0aGF0
IHdlIHBhdXNlIGluIHRoZSBkZWJ1Z2dlciBmb3IgY29uc29sZS5hc3NlcnQgZmFpbHVyZXMKKyAg
ICAgICAgd2hlbiB0aGUgRGVidWdnZXJBZ2VudCBpcyBlbmFibGVkLgorCisgICAgICAgICogaW5z
cGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3BhdXNlLW9uLWFzc2VydC1leHBlY3RlZC50eHQ6IEFk
ZGVkLgorICAgICAgICAqIGluc3BlY3Rvci1wcm90b2NvbC9kZWJ1Z2dlci9wYXVzZS1vbi1hc3Nl
cnQuaHRtbDogQWRkZWQuCisgICAgICAgICogaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3Jl
c291cmNlcy9hc3NlcnQuanM6IEFkZGVkLgorICAgICAgICAoYXNzZXJ0VHJ1ZSk6CisgICAgICAg
IChhc3NlcnRGYWxzZSk6CisgICAgICAgIChhc3NlcnRDb25kaXRpb24pOgorICAgICAgICAoYXNz
ZXJ0Q29uZGl0aW9uV2l0aE1lc3NhZ2UpOgorCiAyMDE0LTAxLTI1ICBBbnR0aSBLb2l2aXN0byAg
PGFudHRpQGFwcGxlLmNvbT4KIAogICAgICAgICBSRUdSRVNTSU9OKHIxNjI3NDQpOiB3c2ouY29t
IHBhaW50cyB3aGl0ZQpkaWZmIC0tZ2l0IGEvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29s
L2RlYnVnZ2VyL3BhdXNlLW9uLWFzc2VydC1leHBlY3RlZC50eHQgYi9MYXlvdXRUZXN0cy9pbnNw
ZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvcGF1c2Utb24tYXNzZXJ0LWV4cGVjdGVkLnR4dApuZXcg
ZmlsZSBtb2RlIDEwMDY0NAppbmRleCAwMDAwMDAwLi44OWE5YmY5Ci0tLSAvZGV2L251bGwKKysr
IGIvTGF5b3V0VGVzdHMvaW5zcGVjdG9yLXByb3RvY29sL2RlYnVnZ2VyL3BhdXNlLW9uLWFzc2Vy
dC1leHBlY3RlZC50eHQKQEAgLTAsMCArMSwyMCBAQAorQ09OU09MRSBNRVNTQUdFOiBsaW5lIDEw
OiBTaG91bGQgYWx3YXlzIGZhaWwuCitDT05TT0xFIE1FU1NBR0U6IGxpbmUgMjI6IEFTU0VSVCBt
ZXNzYWdlCitUZXN0IHRoYXQgYSBmYWlsaW5nIGNvbnNvbGUuYXNzZXJ0IHdpbGwgcGF1c2UgaW4g
dGhlIGRlYnVnZ2VyIHdpdGggYW4gb3B0aW9uYWwgbWVzc2FnZS4KKworU2hvdWxkIG5vdCBwYXVz
ZSBvbiBwYXNzaW5nIGFzc2VydC4KK2luc2lkZSBhc3NlcnRPa2F5CitTaG91bGQgcGF1c2Ugb24g
ZmFpbGluZyBhc3NlcnQuCitpbnNpZGUgYXNzZXJ0RmFsc2UKK1BBU1M6IFBhdXNlZCEKK1Nob3Vs
ZCBub3QgcGF1c2Ugb24gcGFzc2luZyBhc3NlcnQuCitpbnNpZGUgYXNzZXJ0Q29uZGl0aW9uLCBh
bmQgY29uZGl0aW9uIGlzIHRydWUKK1Nob3VsZCBwYXVzZSBvbiBmYWlsaW5nIGFzc2VydC4KK2lu
c2lkZSBhc3NlcnRDb25kaXRpb24sIGFuZCBjb25kaXRpb24gaXMgZmFsc2UKK1BBU1M6IFBhdXNl
ZCEKK1Nob3VsZCBub3QgcGF1c2Ugb24gcGFzc2luZyBhc3NlcnQuCitpbnNpZGUgYXNzZXJ0Q29u
ZGl0aW9uV2l0aE1lc3NhZ2UsIGFuZCBjb25kaXRpb24gaXMgdHJ1ZQorU2hvdWxkIHBhdXNlIG9u
IGZhaWxpbmcgYXNzZXJ0IGFuZCBpbmNsdWRlIGEgbWVzc2FnZS4KK2luc2lkZSBhc3NlcnRDb25k
aXRpb25XaXRoTWVzc2FnZSwgYW5kIGNvbmRpdGlvbiBpcyBmYWxzZQorUEFTUzogUGF1c2VkIQor
CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvcGF1
c2Utb24tYXNzZXJ0Lmh0bWwgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdn
ZXIvcGF1c2Utb24tYXNzZXJ0Lmh0bWwKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uMzZjNGFlOAotLS0gL2Rldi9udWxsCisrKyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90
b2NvbC9kZWJ1Z2dlci9wYXVzZS1vbi1hc3NlcnQuaHRtbApAQCAtMCwwICsxLDgwIEBACis8aHRt
bD4KKzxoZWFkPgorPHNjcmlwdCBzcmM9Ii4uLy4uL2h0dHAvdGVzdHMvaW5zcGVjdG9yLXByb3Rv
Y29sL3Jlc291cmNlcy9wcm90b2NvbC10ZXN0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQgc3JjPSJy
ZXNvdXJjZXMvYXNzZXJ0LmpzIj48L3NjcmlwdD4KKzxzY3JpcHQ+CitmdW5jdGlvbiB0ZXN0KCkK
K3sKKyAgICBJbnNwZWN0b3JUZXN0LnNlbmRDb21tYW5kKCJEZWJ1Z2dlci5lbmFibGUiLCB7fSk7
CisgICAgSW5zcGVjdG9yVGVzdC5zZW5kQ29tbWFuZCgiRGVidWdnZXIuc2V0UGF1c2VPbkV4Y2Vw
dGlvbnMiLCB7c3RhdGU6ICJhbGwifSwgSW5zcGVjdG9yVGVzdC5jaGVja0ZvckVycm9yKTsKKwor
ICAgIHZhciBzdGVwID0gbnVsbDsKKyAgICB2YXIgc3RlcHMgPSBbCisgICAgICAgIHsKKyAgICAg
ICAgICAgIG1lc3NhZ2U6ICJTaG91bGQgbm90IHBhdXNlIG9uIHBhc3NpbmcgYXNzZXJ0LiIsCisg
ICAgICAgICAgICBldmFsdWF0ZTogImFzc2VydFRydWUoKSIsCisgICAgICAgICAgICBwYXVzZTog
ZmFsc2UsCisgICAgICAgIH0sCisgICAgICAgIHsKKyAgICAgICAgICAgIG1lc3NhZ2U6ICJTaG91
bGQgcGF1c2Ugb24gZmFpbGluZyBhc3NlcnQuIiwKKyAgICAgICAgICAgIGV2YWx1YXRlOiAiYXNz
ZXJ0RmFsc2UoKSIsCisgICAgICAgICAgICBwYXVzZTogdHJ1ZSwKKyAgICAgICAgfSwKKyAgICAg
ICAgeworICAgICAgICAgICAgbWVzc2FnZTogIlNob3VsZCBub3QgcGF1c2Ugb24gcGFzc2luZyBh
c3NlcnQuIiwKKyAgICAgICAgICAgIGV2YWx1YXRlOiAiYXNzZXJ0Q29uZGl0aW9uKHdpbmRvdyki
LAorICAgICAgICAgICAgcGF1c2U6IGZhbHNlLAorICAgICAgICB9LAorICAgICAgICB7CisgICAg
ICAgICAgICBtZXNzYWdlOiAiU2hvdWxkIHBhdXNlIG9uIGZhaWxpbmcgYXNzZXJ0LiIsCisgICAg
ICAgICAgICBldmFsdWF0ZTogImFzc2VydENvbmRpdGlvbih3aW5kb3cgPT09IG51bGwpIiwKKyAg
ICAgICAgICAgIHBhdXNlOiB0cnVlLAorICAgICAgICB9LAorICAgICAgICB7CisgICAgICAgICAg
ICBtZXNzYWdlOiAiU2hvdWxkIG5vdCBwYXVzZSBvbiBwYXNzaW5nIGFzc2VydC4iLAorICAgICAg
ICAgICAgZXZhbHVhdGU6ICJhc3NlcnRDb25kaXRpb25XaXRoTWVzc2FnZSh3aW5kb3csICdTaG91
bGQgbm90IGhhcHBlbicpIiwKKyAgICAgICAgICAgIHBhdXNlOiBmYWxzZSwKKyAgICAgICAgfSwK
KyAgICAgICAgeworICAgICAgICAgICAgbWVzc2FnZTogIlNob3VsZCBwYXVzZSBvbiBmYWlsaW5n
IGFzc2VydCBhbmQgaW5jbHVkZSBhIG1lc3NhZ2UuIiwKKyAgICAgICAgICAgIGV2YWx1YXRlOiAi
YXNzZXJ0Q29uZGl0aW9uV2l0aE1lc3NhZ2Uod2luZG93ID09PSBudWxsLCAnQVNTRVJUIG1lc3Nh
Z2UnKSIsCisgICAgICAgICAgICBwYXVzZTogdHJ1ZSwKKyAgICAgICAgfSwKKyAgICBdOworCisg
ICAgSW5zcGVjdG9yVGVzdC5ldmVudEhhbmRsZXJbIkRlYnVnZ2VyLnBhdXNlZCJdID0gZnVuY3Rp
b24obWVzc2FnZU9iamVjdCkKKyAgICB7CisgICAgICAgIGlmIChzdGVwLnBhdXNlKQorICAgICAg
ICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIlBBU1M6IFBhdXNlZCEiKTsKKyAgICAgICAgZWxzZQor
ICAgICAgICAgICAgSW5zcGVjdG9yVGVzdC5sb2coIkZBSUw6IFBhdXNlZCB3aGVuIHVuZXhwZWN0
ZWQiKTsKKworICAgICAgICBJbnNwZWN0b3JUZXN0LnNlbmRDb21tYW5kKCJEZWJ1Z2dlci5yZXN1
bWUiLCB7fSwgcnVuTmV4dFN0ZXApOworICAgIH0KKworICAgIGZ1bmN0aW9uIHJ1bk5leHRTdGVw
KCkgeworICAgICAgICBzdGVwID0gc3RlcHMuc2hpZnQoKTsKKyAgICAgICAgaWYgKCFzdGVwKSB7
CisgICAgICAgICAgICBJbnNwZWN0b3JUZXN0LmNvbXBsZXRlVGVzdCgpOworICAgICAgICAgICAg
cmV0dXJuOworICAgICAgICB9CisKKyAgICAgICAgLy8gRXZhbHV0ZSB0aGUgY29tbWFuZCBpbnNp
ZGUgYSBzZXRUaW1lb3V0IHNvIHRoYXQgd2UgY2FuIGhpdCBleGNlcHRpb25zIGFuZCBicmVhay4K
KyAgICAgICAgLy8gT3RoZXJ3aXNlLCBldmFsdWF0aW5nIHRocm91Z2ggUnVudGltZUFnZW50IHdp
bGwgbm90IHRyaWdnZXIgYSBwYXVzZS4KKyAgICAgICAgLy8gTGlrZXdpc2UsIGlmIG5vIHBhdXNl
IGlzIGV4cGVjdGVkIHdhaXQgZm9yIGEgYml0IGJlZm9yZSBjb250aW51aW5nLgorICAgICAgICBJ
bnNwZWN0b3JUZXN0LmxvZyhzdGVwLm1lc3NhZ2UpOworICAgICAgICBJbnNwZWN0b3JUZXN0LnNl
bmRDb21tYW5kKCJSdW50aW1lLmV2YWx1YXRlIiwge2V4cHJlc3Npb246ICJzZXRUaW1lb3V0KGZ1
bmN0aW9uKCl7IiArIHN0ZXAuZXZhbHVhdGUgKyAifSwgMCkifSwgZnVuY3Rpb24ocmVzcG9uc2VP
YmplY3QpIHsKKyAgICAgICAgICAgIEluc3BlY3RvclRlc3QuY2hlY2tGb3JFcnJvcihyZXNwb25z
ZU9iamVjdCk7CisgICAgICAgICAgICBpZiAoIXN0ZXAucGF1c2UpCisgICAgICAgICAgICAgICAg
c2V0VGltZW91dChydW5OZXh0U3RlcCwgMjApOworICAgICAgICB9KTsKKyAgICB9CisKKyAgICBy
dW5OZXh0U3RlcCgpOworfQorPC9zY3JpcHQ+Cis8L2hlYWQ+Cis8Ym9keSBvbmxvYWQ9InJ1blRl
c3QoKSI+Cis8cD5UZXN0IHRoYXQgYSBmYWlsaW5nIGNvbnNvbGUuYXNzZXJ0IHdpbGwgcGF1c2Ug
aW4gdGhlIGRlYnVnZ2VyIHdpdGggYW4gb3B0aW9uYWwgbWVzc2FnZS48L3A+Cis8L2JvZHk+Cis8
L2h0bWw+CmRpZmYgLS1naXQgYS9MYXlvdXRUZXN0cy9pbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdn
ZXIvcmVzb3VyY2VzL2Fzc2VydC5qcyBiL0xheW91dFRlc3RzL2luc3BlY3Rvci1wcm90b2NvbC9k
ZWJ1Z2dlci9yZXNvdXJjZXMvYXNzZXJ0LmpzCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAw
MDAwMDAuLjIwNzM0ZTYKLS0tIC9kZXYvbnVsbAorKysgYi9MYXlvdXRUZXN0cy9pbnNwZWN0b3It
cHJvdG9jb2wvZGVidWdnZXIvcmVzb3VyY2VzL2Fzc2VydC5qcwpAQCAtMCwwICsxLDIzIEBACitm
dW5jdGlvbiBhc3NlcnRUcnVlKCkKK3sKKyAgICBsb2coImluc2lkZSBhc3NlcnRPa2F5Iik7Cisg
ICAgY29uc29sZS5hc3NlcnQodHJ1ZSwgIlNob3VsZCBuZXZlciBoYXBwZW4uIik7Cit9CisKK2Z1
bmN0aW9uIGFzc2VydEZhbHNlKCkKK3sKKyAgICBsb2coImluc2lkZSBhc3NlcnRGYWxzZSIpOwor
ICAgIGNvbnNvbGUuYXNzZXJ0KGZhbHNlLCAiU2hvdWxkIGFsd2F5cyBmYWlsLiIpOworfQorCitm
dW5jdGlvbiBhc3NlcnRDb25kaXRpb24oY29uZGl0aW9uKQoreworICAgIGxvZygiaW5zaWRlIGFz
c2VydENvbmRpdGlvbiwgYW5kIGNvbmRpdGlvbiBpcyAiICsgISFjb25kaXRpb24pOworICAgIGNv
bnNvbGUuYXNzZXJ0KGNvbmRpdGlvbik7Cit9CisKK2Z1bmN0aW9uIGFzc2VydENvbmRpdGlvbldp
dGhNZXNzYWdlKGNvbmRpdGlvbiwgbWVzc2FnZSkKK3sKKyAgICBsb2coImluc2lkZSBhc3NlcnRD
b25kaXRpb25XaXRoTWVzc2FnZSwgYW5kIGNvbmRpdGlvbiBpcyAiICsgISFjb25kaXRpb24pOwor
ICAgIGNvbnNvbGUuYXNzZXJ0KGNvbmRpdGlvbiwgbWVzc2FnZSk7Cit9CmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvQ01ha2VMaXN0cy50eHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ01ha2VMaXN0cy50eHQKaW5kZXggMWI0MzY3YS4uZDdlOWU2MyAxMDA2NDQKLS0tIGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9DTWFrZUxpc3RzLnR4dApAQCAtMjQyLDggKzI0Miw4IEBAIHNldChKYXZhU2NyaXB0Q29y
ZV9TT1VSQ0VTCiAgICAgaW5zcGVjdG9yL0phdmFTY3JpcHRDYWxsRnJhbWUuY3BwCiAgICAgaW5z
cGVjdG9yL1NjcmlwdERlYnVnU2VydmVyLmNwcAogICAgIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yQWdlbnQuY3BwCisgICAgaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcAogICAgIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAotICAg
IGluc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwCiAKICAgICBp
bnRlcnByZXRlci9BYnN0cmFjdFBDLmNwcAogICAgIGludGVycHJldGVyL0NhbGxGcmFtZS5jcHAK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IGFhYTQ1YTEuLjZmNTczNWEgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDU2IEBACisyMDE0LTAxLTI1ICBKb3NlcGggUGVjb3Jh
cm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogTW92ZSBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50IGludG8gSmF2YVNjcmlwdENvcmUKKyAgICAgICAgaHR0cHM6
Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTEyNzYyOQorCisgICAgICAgIFJldmll
d2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgICogQ01ha2VMaXN0cy50eHQ6CisgICAg
ICAgICogR05VbWFrZWZpbGUubGlzdC5hbToKKyAgICAgICAgKiBKYXZhU2NyaXB0Q29yZS52Y3hw
cm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2o6CisgICAgICAgICogSmF2YVNjcmlwdENvcmUudmN4
cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnM6CisgICAgICAgICogSmF2YVNjcmlw
dENvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAgLSBBZGQgbmV3IGZpbGVz
IHRvIHRoZSBidWlsZC4KKyAgICAgICAgLSBBbHNvLCBzaW5jZSBub24gUkVNT1RFX0lOU1BFQ1RP
UiBwb3J0cyBjYW5ub3QgeWV0IGNvbm5lY3QgdG8gYQorICAgICAgICAgIEpTR2xvYmFsT2JqZWN0
IGZvciBpbnNwZWN0aW9uIHJlbW92ZSB0aG9zZSBmaWxlcyBhcyB0aGV5IGRvbid0CisgICAgICAg
ICAgbmVlZCB0byBiZSBidWlsdC4KKworICAgICAgICAqIGluc3BlY3Rvci9FdmVudExvb3AuY3Bw
OiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6RXZlbnRMb29wOjpjeWNsZSk6CisgICAgICAg
ICogaW5zcGVjdG9yL0V2ZW50TG9vcC5oOiBBZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6RXZl
bnRMb29wOjpFdmVudExvb3ApOgorICAgICAgICAoSW5zcGVjdG9yOjpFdmVudExvb3A6OmVuZGVk
KToKKyAgICAgICAgQWRkIGEgSmF2YVNjcmlwdENvcmUgdmVyc2lvbiBvZiBFdmVudExvb3AuIFRo
aXMgaXMgY3VycmVudGx5IG9ubHkKKyAgICAgICAgdXNlZCBieSB0aGUgTWFjIHBvcnQgZm9yIEpT
R2xvYmFsT2JqZWN0IHJlbW90ZSBpbnNwZWN0aW9uLiBLZWVwCisgICAgICAgIHRoZSBXZWJDb3Jl
L3BsYXRmb3JtIHZlcnNpb24gYWxpdmUgYmVjYXVzZSBmb3IgdGhlIE1hYyBwb3J0IGl0IGRvZXMK
KyAgICAgICAgc2xpZ2h0bHkgZGlmZmVyZW50IHRoaW5ncyBpbnZvbHZpbmcgQXBwS2l0LgorCisg
ICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHA6
CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlcjo6
SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVyKToKKyAgICAgICAgQ3JlYXRlIERlYnVn
Z2VyQWdlbnQgYW5kIGhvb2sgdXAgU2NyaXB0RGVidWdTZXJ2ZXIgd2hlcmUgbmVlZGVkLgorCisg
ICAgICAgICogaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuY3BwOiBB
ZGRlZC4KKyAgICAgICAgKEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZl
cjo6SlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcik6CisgICAgICAgIChJbnNwZWN0b3I6
OkpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6OmFkZExpc3RlbmVyKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3ZlTGlzdGVu
ZXIpOgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVy
OjpyZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucyk6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFs
T2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKToKKyAgICAg
ICAgKiBpbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oOiBBZGRlZC4K
KyAgICAgICAgU2ltcGxlIGltcGxlbWVudGF0aW9uIG9mIFNjcmlwdERlYnVnU2VydmVyIHdpdGgg
YSBKU0dsb2JhbE9iamVjdC4KKworICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHA6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAuCisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6IFJlbmFtZWQgZnJvbSBTb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oLgorICAgICAgICBDb3BpZWQgZnJvbSBXZWJD
b3JlLiBBIGZldyBtZXRob2RzIG5lZWQgdG8gYmUgbWFkZSB2aXJ0dWFsIHNvIHRoYXQgV2ViIGlt
cGxlbWVudGF0aW9ucworICAgICAgICBjYW4gb3ZlcnJpZGUgYW5kIGV4dGVuZCB0aGUgZnVuY2l0
b25hbGl0eS4gRS5nLiBzb3VyY2VNYXBVUkxGb3JTY3JpcHQgYW5kIGVuYWJsZS9kaXNhYmxlLgor
ICAgICAgICAKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdn
ZXJBZ2VudC5jcHA6IEFkZGVkLgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSlNHbG9iYWxP
YmplY3REZWJ1Z2dlckFnZW50Lmg6IEFkZGVkLgorICAgICAgICAoSW5zcGVjdG9yOjpKU0dsb2Jh
bE9iamVjdERlYnVnZ2VyQWdlbnQ6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudCk6CisgICAg
ICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6c3RhcnRMaXN0ZW5p
bmdTY3JpcHREZWJ1Z1NlcnZlcik6CisgICAgICAgIChJbnNwZWN0b3I6OkpTR2xvYmFsT2JqZWN0
RGVidWdnZXJBZ2VudDo6c3RvcExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZv
ckV2YWwpOgorICAgICAgICBTaW1wbGUgaW1wbGVtZW50YXRpb24gb2YgRGVidWdnZXJBR2VudCB3
aXRoIGEgSlNHbG9iYWxPYmplY3QuCisKIDIwMTQtMDEtMjUgIERhcmluIEFkbGVyICA8ZGFyaW5A
YXBwbGUuY29tPgogCiAgICAgICAgIFRyeSB0byBmaXggTWFjIGJ1aWxkLgpkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL0dOVW1ha2VmaWxlLmxpc3QuYW0gYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQppbmRleCA0ZDE2MzVlLi5kMGZkZDNhIDEwMDY0
NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvR05VbWFrZWZpbGUubGlzdC5hbQpAQCAtNjY1LDEwICs2NjUs
MTAgQEAgamF2YXNjcmlwdGNvcmVfc291cmNlcyArPSBcCiAJU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9TY3JpcHREZWJ1Z1NlcnZlci5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JBZ2VudC5jcHAgXAorCVNvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBcCisJU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3Rv
clJ1bnRpbWVBZ2VudC5oIFwKIAlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIFwKLQlTb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oIFwKLQlTb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5j
cHAgXAogCVNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnRlcnByZXRlci9BYnN0cmFjdFBDLmNwcCBc
CiAJU291cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0Fic3RyYWN0UEMuaCBcCiAJU291
cmNlL0phdmFTY3JpcHRDb3JlL2ludGVycHJldGVyL0NhY2hlZENhbGwuaCBcCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0
Q29yZS52Y3hwcm9qIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHBy
b2ovSmF2YVNjcmlwdENvcmUudmN4cHJvagppbmRleCA3MmRjYTMyLi4wMzUyNGMzIDEwMDY0NAot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2Ny
aXB0Q29yZS52Y3hwcm9qCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29y
ZS52Y3hwcm9qL0phdmFTY3JpcHRDb3JlLnZjeHByb2oKQEAgLTQ5MSw3ICs0OTEsOSBAQAogICAg
IDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEphdmFTY3JpcHRDYWxsRnJhbWUuY3Bw
IiAvPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXFNjcmlwdERlYnVnU2Vy
dmVyLmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxhZ2VudHNc
SW5zcGVjdG9yQWdlbnQuY3BwIiAvPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVj
dG9yXGFnZW50c1xJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCIgLz4KICAgICA8Q2xDb21waWxl
IEluY2x1ZGU9Ii4uXGluc3BlY3RvclxhZ2VudHNcSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCIg
Lz4KKyAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxhZ2VudHNcSlNHbG9iYWxP
YmplY3REZWJ1Z2dlckFnZW50LmNwcCIgLz4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGlu
c3BlY3RvclxhZ2VudHNcSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuY3BwIiAvPgogICAgIDxD
bENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcQWJzdHJhY3RQQy5jcHAiIC8+CiAgICAg
PENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxDYWxsRnJhbWUuY3BwIiAvPgpAQCAt
MTA3MCw4ICsxMDcyLDggQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxT
Y3JpcHREZWJ1Z0xpc3RlbmVyLmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNw
ZWN0b3JcU2NyaXB0RGVidWdTZXJ2ZXIuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4u
XGluc3BlY3RvclxhZ2VudHNcSW5zcGVjdG9yQWdlbnQuaCIgLz4KKyAgICA8Q2xJbmNsdWRlIElu
Y2x1ZGU9Ii4uXGluc3BlY3RvclxhZ2VudHNcSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIiAvPgog
ICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXGFnZW50c1xJbnNwZWN0b3JSdW50
aW1lQWdlbnQuaCIgLz4KLSAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxhZ2Vu
dHNcSlNHbG9iYWxPYmplY3RSdW50aW1lQWdlbnQuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGludGVycHJldGVyXEFic3RyYWN0UEMuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGludGVycHJldGVyXENhY2hlZENhbGwuaCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1
ZGU9Ii4uXGludGVycHJldGVyXENhbGxGcmFtZS5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ovSmF2YVNjcmlwdENvcmUudmN4cHJv
ai5maWx0ZXJzIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnZjeHByb2ov
SmF2YVNjcmlwdENvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDZjNmMwOGUuLjhlYzU3N2EgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qL0ph
dmFTY3JpcHRDb3JlLnZjeHByb2ouZmlsdGVycworKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
SmF2YVNjcmlwdENvcmUudmN4cHJvai9KYXZhU2NyaXB0Q29yZS52Y3hwcm9qLmZpbHRlcnMKQEAg
LTMwMCwxMiArMzAwLDEyIEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jc
YWdlbnRzXEluc3BlY3RvckFnZW50LmNwcCI+CiAgICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmls
dGVyPgogICAgIDwvQ2xDb21waWxlPgorICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVj
dG9yXGFnZW50c1xJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCI+CisgICAgICA8RmlsdGVyPmlu
c3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVk
ZT0iLi5caW5zcGVjdG9yXGFnZW50c1xJbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIj4KICAgICAg
IDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcYWdlbnRzXEpTR2xvYmFsT2JqZWN0UnVudGltZUFn
ZW50LmNwcCI+Ci0gICAgICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgotICAgIDwvQ2xDb21w
aWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW50ZXJwcmV0ZXJcQWJzdHJhY3RQQy5j
cHAiPgogICAgICAgPEZpbHRlcj5pbnRlcnByZXRlcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxl
PgpAQCAtMTgwMiwxMiArMTgwMiwxMiBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5z
cGVjdG9yXGFnZW50c1xJbnNwZWN0b3JBZ2VudC5oIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9y
PC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxp
bnNwZWN0b3JcYWdlbnRzXEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCI+CisgICAgICA8RmlsdGVy
Pmluc3BlY3RvcjwvRmlsdGVyPgorICAgIDwvQ2xJbmNsdWRlPgogICAgIDxDbEluY2x1ZGUgSW5j
bHVkZT0iLi5caW5zcGVjdG9yXGFnZW50c1xJbnNwZWN0b3JSdW50aW1lQWdlbnQuaCI+CiAgICAg
ICA8RmlsdGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgotICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXGFnZW50c1xKU0dsb2JhbE9iamVjdFJ1bnRpbWVB
Z2VudC5oIj4KLSAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1
ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnRlcnByZXRlclxBYnN0cmFjdFBDLmgi
PgogICAgICAgPEZpbHRlcj5pbnRlcnByZXRlcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpk
aWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJv
ai9wcm9qZWN0LnBieHByb2ogYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvSmF2YVNjcmlwdENvcmUu
eGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvagppbmRleCBmNTg3MzcwLi5hZDRiODQ1ZSAxMDA2NDQK
LS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhjb2RlcHJvai9wcm9q
ZWN0LnBieHByb2oKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0phdmFTY3JpcHRDb3JlLnhj
b2RlcHJvai9wcm9qZWN0LnBieHByb2oKQEAgLTkxMCw2ICs5MTAsOCBAQAogCQlBNTAzRkEyMjE4
OEVGRjY4MDAxMTBGMTQgLyogU2NyaXB0RGVidWdMaXN0ZW5lci5oIGluIEhlYWRlcnMgKi8gPSB7
aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUwM0ZBMjAxODhFRkY2ODAwMTEwRjE0IC8q
IFNjcmlwdERlYnVnTGlzdGVuZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRFUyA9IChQcml2
YXRlLCApOyB9OyB9OwogCQlBNTAzRkEyNTE4OEVGRkZEMDAxMTBGMTQgLyogU2NyaXB0RGVidWdT
ZXJ2ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QTUwM0ZBMjMxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmNwcCAqLzsgfTsK
IAkJQTUwM0ZBMjYxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVh
ZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkEyNDE4OEVGRkZE
MDAxMTBGMTQgLyogU2NyaXB0RGVidWdTZXJ2ZXIuaCAqLzsgc2V0dGluZ3MgPSB7QVRUUklCVVRF
UyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNTAzRkEyOTE4OEYxMDU5MDAxMTBGMTQgLyogSlNH
bG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQ
QlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkEyNzE4OEYxMDU5MDAxMTBGMTQgLyogSlNHbG9i
YWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5jcHAgKi87IH07CisJCUE1MDNGQTJBMTg4RjEwNTkw
MDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTAzRkEyODE4OEYxMDU5MDAxMTBG
MTQgLyogSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oICovOyB9OwogCQlBNTBFNEI2
MTE4ODA5REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MEU0QjVEMTg4MDlERDUwMDY4
QTQ2RCAvKiBJbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwICovOyB9OwogCQlBNTBFNEI2MjE4ODA5
REQ1MDA2OEE0NkQgLyogSW5zcGVjdG9yUnVudGltZUFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTBFNEI1RTE4ODA5REQ1MDA2OEE0NkQgLyog
SW5zcGVjdG9yUnVudGltZUFnZW50LmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJp
dmF0ZSwgKTsgfTsgfTsKIAkJQTUwRTRCNjMxODgwOURENTAwNjhBNDZEIC8qIEpTR2xvYmFsT2Jq
ZWN0UnVudGltZUFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1MEU0QjVGMTg4MDlERDUwMDY4QTQ2RCAvKiBKU0dsb2JhbE9iamVjdFJ1bnRp
bWVBZ2VudC5jcHAgKi87IH07CkBAIC05MzgsNiArOTQwLDggQEAKIAkJQTUzMjQzOTMxODU2OTcw
OTAwMkVENjkyIC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5IGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTUzMjQzOTAxODU2OTZFNjAwMkVE
NjkyIC8qIENvZGVHZW5lcmF0b3JJbnNwZWN0b3JTdHJpbmdzLnB5ICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1MzI0Mzk0MTg1Njk3MDkwMDJFRDY5
MiAvKiBnZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSBpbiBIZWFkZXJzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1MzI0MzkxMTg1Njk2RTYwMDJFRDY5MiAv
KiBnZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSAqLzsgc2V0dGluZ3MgPSB7QVRU
UklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OwogCQlBNTMyNDM5ODE4NTZBNDg5MDAyRUQ2OTIg
LyogSW5zcGVjdG9ySlMuanNvbiBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsg
ZmlsZVJlZiA9IEE1MzI0Mzk1MTg1NkE0NzUwMDJFRDY5MiAvKiBJbnNwZWN0b3JKUy5qc29uICov
OyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CisJCUE1NDk4MjAz
MTg5MUQwQjAwMDgxRTVCOCAvKiBFdmVudExvb3AuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0OTgyMDExODkxRDBCMDAwODFFNUI4IC8qIEV2ZW50
TG9vcC5jcHAgKi87IH07CisJCUE1NDk4MjA0MTg5MUQwQjAwMDgxRTVCOCAvKiBFdmVudExvb3Au
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1NDk4MjAy
MTg5MUQwQjAwMDgxRTVCOCAvKiBFdmVudExvb3AuaCAqLzsgfTsKIAkJQTU0Q0YyRjUxODRFQUIy
NDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1
aWxkRmlsZTsgZmlsZVJlZiA9IEE1NENGMkYyMTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1
ZS5jcHAgKi87IH07CiAJCUE1NENGMkY2MTg0RUFCMjQwMDIzN0YxOSAvKiBTY3JpcHRWYWx1ZS5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU0Q0YyRjMx
ODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVU
RVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKIAkJQTU0Q0YyRjkxODRFQUVEQTAwMjM3RjE5IC8qIFNj
cmlwdE9iamVjdC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBBNTRDRjJGNzE4NEVBRURBMDAyMzdGMTkgLyogU2NyaXB0T2JqZWN0LmNwcCAqLzsgfTsK
QEAgLTk0NSw2ICs5NDksMTAgQEAKIAkJQTU1RDkzQTUxODUwMTJBODAwNDAwREVEIC8qIFNjcmlw
dEZ1bmN0aW9uQ2FsbC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNTVEOTNBMzE4NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNw
cCAqLzsgfTsKIAkJQTU1RDkzQTYxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2Fs
bC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1RDkz
QTQxODUwMTJBODAwNDAwREVEIC8qIFNjcmlwdEZ1bmN0aW9uQ2FsbC5oICovOyBzZXR0aW5ncyA9
IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1NUQ5M0FDMTg1MTRGNzkwMDQw
MERFRCAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJY
QnVpbGRGaWxlOyBmaWxlUmVmID0gQTU1RDkzQUIxODUxNEY3OTAwNDAwREVEIC8qIEluc3BlY3Rv
clR5cGVCdWlsZGVyLmggKi87IHNldHRpbmdzID0ge0FUVFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsg
fTsgfTsKKwkJQTU3RDIzRTUxODkwQ0VCRjAwMzFDN0ZBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3
RDIzRTMxODkwQ0VCRjAwMzFDN0ZBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwICovOyB9
OworCQlBNTdEMjNFNjE4OTBDRUJGMDAzMUM3RkEgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTU3RDIzRTQx
ODkwQ0VCRjAwMzFDN0ZBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCAqLzsgc2V0dGluZ3Mg
PSB7QVRUUklCVVRFUyA9IChQcml2YXRlLCApOyB9OyB9OworCQlBNTdEMjNFOTE4OTFCMDc3MDAz
MUM3RkEgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovID0g
e2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0QyM0U3MTg5MUIwNzcwMDMxQzdGQSAv
KiBKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwICovOyB9OworCQlBNTdEMjNFQTE4OTFC
MDc3MDAzMUM3RkEgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAq
LyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdEMjNFODE4OTFCMDc3MDAzMUM3
RkEgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmggKi87IH07CiAJCUE1N0QyM0VEMTg5
MUI1NTQwMDMxQzdGQSAvKiBSZWd1bGFyRXhwcmVzc2lvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtp
c2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNTdEMjNFQjE4OTFCNTU0MDAzMUM3RkEgLyog
UmVndWxhckV4cHJlc3Npb24uY3BwICovOyB9OwogCQlBNTdEMjNFRTE4OTFCNTU0MDAzMUM3RkEg
LyogUmVndWxhckV4cHJlc3Npb24uaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmls
ZTsgZmlsZVJlZiA9IEE1N0QyM0VDMTg5MUI1NTQwMDMxQzdGQSAvKiBSZWd1bGFyRXhwcmVzc2lv
bi5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1
N0QyM0YxMTg5MUI1QjQwMDMxQzdGQSAvKiBDb250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcCBpbiBT
b3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1N0QyM0VGMTg5MUI1
QjQwMDMxQzdGQSAvKiBDb250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcCAqLzsgfTsKQEAgLTIzMTIs
NiArMjMyMCw4IEBACiAJCUE1MDNGQTIwMTg4RUZGNjgwMDExMEYxNCAvKiBTY3JpcHREZWJ1Z0xp
c3RlbmVyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdERlYnVnTGlz
dGVuZXIuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwM0ZBMjMxODhFRkZGRDAw
MTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJl
bmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3Bw
LmNwcDsgcGF0aCA9IFNjcmlwdERlYnVnU2VydmVyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJQTUwM0ZBMjQxODhFRkZGRDAwMTEwRjE0IC8qIFNjcmlwdERlYnVnU2VydmVyLmgg
Ki8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdERlYnVnU2VydmVyLmg7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1MDNGQTI3MTg4RjEwNTkwMDExMEYxNCAvKiBK
U0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVm
ZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUu
Y3BwLmNwcDsgcGF0aCA9IEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OworCQlBNTAzRkEyODE4OEYxMDU5MDAxMTBGMTQgLyogSlNH
bG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmg7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CiAJCUE1MEU0QjVEMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JSdW50
aW1lQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSW5zcGVj
dG9yUnVudGltZUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwRTRC
NUUxODgwOURENTAwNjhBNDZEIC8qIEluc3BlY3RvclJ1bnRpbWVBZ2VudC5oICovID0ge2lzYSA9
IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JSdW50aW1lQWdlbnQuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUwRTRCNUYxODgwOURENTAwNjhBNDZEIC8qIEpTR2xvYmFs
T2JqZWN0UnVudGltZUFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxl
RW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0
aCA9IEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKQEAgLTIzNDUsNiArMjM1NSw4IEBACiAJCUE1MzI0MzkxMTg1Njk2RTYwMDJFRDY5MiAv
KiBnZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSAqLyA9IHtpc2EgPSBQQlhGaWxl
UmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHRleHQuc2Ny
aXB0LnB5dGhvbjsgcGF0aCA9ICJnZW5lcmF0ZS1jb21iaW5lZC1pbnNwZWN0b3ItanNvbi5weSI7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1MzI0Mzk1MTg1NkE0NzUwMDJFRDY5MiAv
KiBJbnNwZWN0b3JKUy5qc29uICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNv
ZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dC5qc29uOyBwYXRoID0gSW5zcGVjdG9y
SlMuanNvbjsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTUzMjQzOTYxODU2QTQ3NTAw
MkVENjkyIC8qIEluc3BlY3RvckpTQmFja2VuZENvbW1hbmRzLmpzICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5qYXZhc2NyaXB0OyBwYXRoID0gSW5zcGVjdG9ySlNCYWNrZW5kQ29tbWFuZHMuanM7IHNv
dXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUE1NDk4MjAxMTg5MUQwQjAwMDgxRTVCOCAvKiBF
dmVudExvb3AuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9
IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gRXZlbnRM
b29wLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU0OTgyMDIxODkxRDBCMDAw
ODFFNUI4IC8qIEV2ZW50TG9vcC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVF
bmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBF
dmVudExvb3AuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU0Q0YyRjIxODRFQUIy
NDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IFNjcmlwdFZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJ
QTU0Q0YyRjMxODRFQUIyNDAwMjM3RjE5IC8qIFNjcmlwdFZhbHVlLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgcGF0aCA9IFNjcmlwdFZhbHVlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUE1NENGMkY3MTg0RUFFREEwMDIzN0YxOSAvKiBTY3JpcHRPYmplY3QuY3BwICovID0g
e2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gU2NyaXB0T2JqZWN0LmNwcDsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTIzNTIsNiArMjM2NCwxMCBAQAogCQlBNTVEOTNBMzE4
NTAxMkE4MDA0MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNjcmlwdEZ1bmN0aW9uQ2FsbC5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CiAJCUE1NUQ5M0E0MTg1MDEyQTgwMDQwMERFRCAvKiBTY3JpcHRGdW5j
dGlvbkNhbGwuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gU2NyaXB0RnVuY3Rp
b25DYWxsLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1NUQ5M0FCMTg1MTRGNzkw
MDQwMERFRCAvKiBJbnNwZWN0b3JUeXBlQnVpbGRlci5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
Lmg7IHBhdGggPSBJbnNwZWN0b3JUeXBlQnVpbGRlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OworCQlBNTdEMjNFMzE4OTBDRUJGMDAzMUM3RkEgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dC5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFz
dEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTU3RDIzRTQxODkw
Q0VCRjAwMzFDN0ZBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhG
aWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJj
ZWNvZGUuYy5oOyBwYXRoID0gSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OworCQlBNTdEMjNFNzE4OTFCMDc3MDAzMUM3RkEgLyogSlNHbG9iYWxPYmpl
Y3REZWJ1Z2dlckFnZW50LmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9
IEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CisJCUE1N0QyM0U4MTg5MUIwNzcwMDMxQzdGQSAvKiBKU0dsb2JhbE9iamVjdERlYnVnZ2Vy
QWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBs
YXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dlckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1N0QyM0VCMTg5
MUI1NTQwMDMxQzdGQSAvKiBSZWd1bGFyRXhwcmVzc2lvbi5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IG5hbWUgPSBSZWd1bGFyRXhwcmVzc2lvbi5jcHA7IHBhdGggPSB5YXJyL1Jl
Z3VsYXJFeHByZXNzaW9uLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTU3RDIz
RUMxODkxQjU1NDAwMzFDN0ZBIC8qIFJlZ3VsYXJFeHByZXNzaW9uLmggKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmMuaDsgbmFtZSA9IFJlZ3VsYXJFeHByZXNzaW9uLmg7IHBhdGggPSB5YXJyL1JlZ3Vs
YXJFeHByZXNzaW9uLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUE1N0QyM0VGMTg5
MUI1QjQwMDMxQzdGQSAvKiBDb250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENvbnRlbnRTZWFyY2hVdGlsaXRpZXMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNDM2Niw4ICs0MzgyLDEyIEBACiAJCQljaGlsZHJl
biA9ICgKIAkJCQlBNUNFRUUxMjE4N0YzQkFEMDBFNTVDOTkgLyogSW5zcGVjdG9yQWdlbnQuY3Bw
ICovLAogCQkJCUE1Q0VFRTEzMTg3RjNCQUQwMEU1NUM5OSAvKiBJbnNwZWN0b3JBZ2VudC5oICov
LAorCQkJCUE1N0QyM0UzMTg5MENFQkYwMDMxQzdGQSAvKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
LmNwcCAqLywKKwkJCQlBNTdEMjNFNDE4OTBDRUJGMDAzMUM3RkEgLyogSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5oICovLAogCQkJCUE1MEU0QjVEMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNwZWN0b3JS
dW50aW1lQWdlbnQuY3BwICovLAogCQkJCUE1MEU0QjVFMTg4MDlERDUwMDY4QTQ2RCAvKiBJbnNw
ZWN0b3JSdW50aW1lQWdlbnQuaCAqLywKKwkJCQlBNTdEMjNFNzE4OTFCMDc3MDAzMUM3RkEgLyog
SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcCAqLywKKwkJCQlBNTdEMjNFODE4OTFCMDc3
MDAzMUM3RkEgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmggKi8sCiAJCQkJQTUwRTRC
NUYxODgwOURENTAwNjhBNDZEIC8qIEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50LmNwcCAqLywK
IAkJCQlBNTBFNEI2MDE4ODA5REQ1MDA2OEE0NkQgLyogSlNHbG9iYWxPYmplY3RSdW50aW1lQWdl
bnQuaCAqLywKIAkJCSk7CkBAIC00NDEwLDYgKzQ0MzAsOCBAQAogCQkJCUE1MzI0MzhFMTg1Njk2
Q0UwMDJFRDY5MiAvKiBzY3JpcHRzICovLAogCQkJCUE1N0QyM0VGMTg5MUI1QjQwMDMxQzdGQSAv
KiBDb250ZW50U2VhcmNoVXRpbGl0aWVzLmNwcCAqLywKIAkJCQlBNTdEMjNGMDE4OTFCNUI0MDAz
MUM3RkEgLyogQ29udGVudFNlYXJjaFV0aWxpdGllcy5oICovLAorCQkJCUE1NDk4MjAxMTg5MUQw
QjAwMDgxRTVCOCAvKiBFdmVudExvb3AuY3BwICovLAorCQkJCUE1NDk4MjAyMTg5MUQwQjAwMDgx
RTVCOCAvKiBFdmVudExvb3AuaCAqLywKIAkJCQlBNTEzRTVCNTE4NUI4QkQzMDA3RTk1QUQgLyog
SW5qZWN0ZWRTY3JpcHQuY3BwICovLAogCQkJCUE1MTNFNUI2MTg1QjhCRDMwMDdFOTVBRCAvKiBJ
bmplY3RlZFNjcmlwdC5oICovLAogCQkJCUE1MTRCMkMwMTg1QTY4NDQwMEYzQzdDQiAvKiBJbmpl
Y3RlZFNjcmlwdEJhc2UuY3BwICovLApAQCAtNDQzMyw2ICs0NDU1LDggQEAKIAkJCQlBNTkzQ0Y4
MTE4NDAzNzcxMDBCRkNFMjcgLyogSW5zcGVjdG9yVmFsdWVzLmggKi8sCiAJCQkJQTUxMDA3QkUx
ODdDQzNDNjAwQjM4ODc5IC8qIEpTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAg
Ki8sCiAJCQkJQTUxMDA3QkYxODdDQzNDNjAwQjM4ODc5IC8qIEpTR2xvYmFsT2JqZWN0SW5zcGVj
dG9yQ29udHJvbGxlci5oICovLAorCQkJCUE1MDNGQTI3MTg4RjEwNTkwMDExMEYxNCAvKiBKU0ds
b2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmNwcCAqLywKKwkJCQlBNTAzRkEyODE4OEYxMDU5
MDAxMTBGMTQgLyogSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oICovLAogCQkJCUE1
MTNFNUJBMTg1QkZBQ0MwMDdFOTVBRCAvKiBKU0luamVjdGVkU2NyaXB0SG9zdC5jcHAgKi8sCiAJ
CQkJQTUxM0U1QkIxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0LmggKi8s
CiAJCQkJQTUxM0U1QkMxODVCRkFDQzAwN0U5NUFEIC8qIEpTSW5qZWN0ZWRTY3JpcHRIb3N0UHJv
dG90eXBlLmNwcCAqLywKQEAgLTQ2MDcsNiArNDYzMSw3IEBACiAJCQkJQkMxMTY2MDIwRTE5OTdC
NDAwODA2NkREIC8qIERhdGVJbnN0YW5jZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMTRBMTU2MzIx
MDk2NjM2NTAwNkZBMjYwIC8qIERhdGVJbnN0YW5jZUNhY2hlLmggaW4gSGVhZGVycyAqLywKIAkJ
CQlCQ0QyMDM0QzBFMTcxMzVFMDAyQzdFODIgLyogRGF0ZVByb3RvdHlwZS5oIGluIEhlYWRlcnMg
Ki8sCisJCQkJQTUwM0ZBMkExODhGMTA1OTAwMTEwRjE0IC8qIEpTR2xvYmFsT2JqZWN0U2NyaXB0
RGVidWdTZXJ2ZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRDIwM0U4MEUxNzE4RjQwMDJDN0U4
MiAvKiBEYXRlUHJvdG90eXBlLmx1dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEMzRkEwRTE2
RjVDRDAwQjM0NDYwIC8qIERlYnVnZ2VyLmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzMxMzU2NDBG
MzAyRkEzMDAzREZEM0EgLyogRGVidWdnZXJBY3RpdmF0aW9uLmggaW4gSGVhZGVycyAqLywKQEAg
LTQ2NzUsNiArNDcwMCw3IEBACiAJCQkJQTdEODlDRkExN0EwQjhDQzAwNzczQUQ4IC8qIERGR0Zs
dXNoTGl2ZW5lc3NBbmFseXNpc1BoYXNlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NkVDOURDNjEz
MjhERjgyMDAyQjJBRDcgLyogREZHR2VuZXJhdGlvbkluZm8uaCBpbiBIZWFkZXJzICovLAogCQkJ
CTg2RUM5REM4MTMyOERGODIwMDJCMkFENyAvKiBERkdHcmFwaC5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTU3RDIzRTYxODkwQ0VCRjAwMzFDN0ZBIC8qIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBp
biBIZWFkZXJzICovLAogCQkJCTBGQjE0RTIxMTgxMjU3MEIwMDlCNkI0RCAvKiBERkdJbmxpbmVD
YWNoZVdyYXBwZXIuaCBpbiBIZWFkZXJzICovLAogCQkJCTBGQjE0RTIzMTgxMzA5NTUwMDlCNkI0
RCAvKiBERkdJbmxpbmVDYWNoZVdyYXBwZXJJbmxpbmVzLmggaW4gSGVhZGVycyAqLywKIAkJCQlB
NzA0RDkwNjE3QTBCQUE4MDA2QkE1NTQgLyogREZHSW5QbGFjZUFic3RyYWN0U3RhdGUuaCBpbiBI
ZWFkZXJzICovLApAQCAtNDczNSw2ICs0NzYxLDcgQEAKIAkJCQkwRkJFMEY3NzE2QzFEQjEyMDA4
MkM1RTggLyogREZHVW5pZmljYXRpb25QaGFzZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYzNEIx
NEExNkQ0MjAxMzAwMUNEQTVBIC8qIERGR1VzZUtpbmQuaCBpbiBIZWFkZXJzICovLAogCQkJCTBG
M0IzQTJDMTU0NzUwMDIwMDNFRDBGRiAvKiBERkdWYWxpZGF0ZS5oIGluIEhlYWRlcnMgKi8sCisJ
CQkJQTU3RDIzRUExODkxQjA3NzAwMzFDN0ZBIC8qIEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2Vu
dC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQkRDNDcxNTIyODAyNTAwQ0Q4OTEwIC8qIERGR1Zh
bHVlUmVjb3ZlcnlPdmVycmlkZS5oIGluIEhlYWRlcnMgKi8sCiAJCQkJMEYyQkRDNDgxNTIyODAy
OTAwQ0Q4OTEwIC8qIERGR1ZhbHVlU291cmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkwRjYyMDE3
NDE0M0ZDRDMzMDA2OEI3N0MgLyogREZHVmFyaWFibGVBY2Nlc3NEYXRhLmggaW4gSGVhZGVycyAq
LywKQEAgLTQ4NTgsNiArNDg4NSw3IEBACiAJCQkJODYwQkQ4MDExNDhFQTZGMjAwMTEyQjJGIC8q
IEludHJpbnNpYy5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTMwRTE2RjVDRDAwQjM0NDYw
IC8qIEphdmFTY3JpcHQuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDMThDNDE0MEUxNkY1Q0QwMEIz
NDQ2MCAvKiBKYXZhU2NyaXB0Q29yZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQTU0OTgyMDQxODkx
RDBCMDAwODFFNUI4IC8qIEV2ZW50TG9vcC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQkMxOEM0MTUw
RTE2RjVDRDAwQjM0NDYwIC8qIEphdmFTY3JpcHRDb3JlUHJlZml4LmggaW4gSGVhZGVycyAqLywK
IAkJCQkxNDI5RDkzMDBFRDIyRDcwMDBCODk2MTkgLyogSklULmggaW4gSGVhZGVycyAqLywKIAkJ
CQk4NkNDRUZERTBGNDEzRjg5MDBGRDdGOUUgLyogSklUQ29kZS5oIGluIEhlYWRlcnMgKi8sCkBA
IC01ODA3LDYgKzU4MzUsNyBAQAogCQkJCTBGMzRCMTQ5MTZENDIwMTAwMDFDREE1QSAvKiBERkdV
c2VLaW5kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGM0IzQTJCMTU0NzUwMDAwMDNFRDBGRiAv
KiBERkdWYWxpZGF0ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlBNTVEOTNBNTE4NTAxMkE4MDA0
MDBERUQgLyogU2NyaXB0RnVuY3Rpb25DYWxsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUE1MDNG
QTI5MTg4RjEwNTkwMDExMEYxNCAvKiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmNw
cCBpbiBTb3VyY2VzICovLAogCQkJCTBGMkJEQzRGMTUyMjhCRjMwMENEODkxMCAvKiBERkdWYWx1
ZVNvdXJjZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkREQkZCNTE2NjZFRUQ4MDBDNTVGRUYg
LyogREZHVmFyaWFibGVBY2Nlc3NEYXRhRHVtcC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjJC
REM1MTE1MjI4RkZEMDBDRDg5MTAgLyogREZHVmFyaWFibGVFdmVudC5jcHAgaW4gU291cmNlcyAq
LywKQEAgLTU4NDEsNiArNTg3MCw3IEBACiAJCQkJMEYyMzVCRDgxNzE3OEUxQzAwNjkwQzdGIC8q
IEZUTEV4aXRUaHVua0dlbmVyYXRvci5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRjIzNUJEQTE3
MTc4RTFDMDA2OTBDN0YgLyogRlRMRXhpdFZhbHVlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUE3
RjI5OTZCMTdBMEJCNjcwMDEwNDE3QSAvKiBGVExGYWlsLmNwcCBpbiBTb3VyY2VzICovLAorCQkJ
CUE1N0QyM0U1MTg5MENFQkYwMDMxQzdGQSAvKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCTBGRDhBMzE5MTdENTFGMjIwMENBMkM0MCAvKiBGVExGb3JPU1JF
bnRyeUpJVENvZGUuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEYyNUYxQUYxODE2MzVGMzAwNTIy
RjM5IC8qIEZUTElubGluZUNhY2hlU2l6ZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkwRkVBMEEy
ODE3MDk2MjNCMDBCQjcyMkMgLyogRlRMSW50cmluc2ljUmVwb3NpdG9yeS5jcHAgaW4gU291cmNl
cyAqLywKQEAgLTU5MDMsNiArNTkzMyw3IEBACiAJCQkJMEZCMTRFMUUxODEyNEFDRTAwOUI2QjRE
IC8qIEpJVElubGluZUNhY2hlR2VuZXJhdG9yLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCUJDREQ1
MUVCMEZCOERGNzQwMDRBOEJEQyAvKiBKSVRPcGNvZGVzLmNwcCBpbiBTb3VyY2VzICovLAogCQkJ
CUE3MTIzNkU1MTE5NUYzM0MwMEJEMjE3NCAvKiBKSVRPcGNvZGVzMzJfNjQuY3BwIGluIFNvdXJj
ZXMgKi8sCisJCQkJQTU0OTgyMDMxODkxRDBCMDAwODFFNUI4IC8qIEV2ZW50TG9vcC5jcHAgaW4g
U291cmNlcyAqLywKIAkJCQkyQTRFQzkwQjE4NjBENkMyMDA5NEY3ODIgLyogV3JpdGVCYXJyaWVy
QnVmZmVyLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTBGMjRFNTRDMTdFRTI3NDkwMEFCQjIxNyAv
KiBKSVRPcGVyYXRpb25zLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg2Q0M4NUM0MEVFN0E4OTQw
MDI4ODY4MiAvKiBKSVRQcm9wZXJ0eUFjY2Vzcy5jcHAgaW4gU291cmNlcyAqLywKQEAgLTU5ODAs
NiArNjAxMSw3IEBACiAJCQkJQTUwM0ZBMUIxODhFMEZCMDAwMTEwRjE0IC8qIEpTSmF2YVNjcmlw
dENhbGxGcmFtZS5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NkUzQzYxODE2N0JBQkVFMDA2RDc2
MEEgLyogSlNXcmFwcGVyTWFwLm1tIGluIFNvdXJjZXMgKi8sCiAJCQkJMTQyODA4NzAxMDdFQzEz
NDAwMTNFN0IyIC8qIEpTV3JhcHBlck9iamVjdC5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlBNTdE
MjNFOTE4OTFCMDc3MDAzMUM3RkEgLyogSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDRkQ4QzkyMEVFQjJFRTcwMDI4Mzg0OCAvKiBKdW1wVGFibGUu
Y3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMEZCNTQ2NzkxNEY1QzQ2QjAwMkMyOTg5IC8qIExhenlP
cGVyYW5kVmFsdWVQcm9maWxlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTk1QUI4MzQyMERBNDMy
MjUwMEJDODNGMyAvKiBMZWdhY3lQcm9maWxlci5jcHAgaW4gU291cmNlcyAqLywKZGlmZiAtLWdp
dCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvRXZlbnRMb29wLmNwcCBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvRXZlbnRMb29wLmNwcApuZXcgZmlsZSBtb2RlIDEw
MDY0NAppbmRleCAwMDAwMDAwLi45ZDc2YjFlCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9FdmVudExvb3AuY3BwCkBAIC0wLDAgKzEsNjEgQEAKKy8q
CisgKiBDb3B5cmlnaHQgKEMpIDIwMTEgQXBwbGUgSW5jLiBBbGwgUmlnaHRzIFJlc2VydmVkLgor
ICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMs
IHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVk
IHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0
cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQK
KyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcg
ZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJl
cHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1
bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJp
YnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBg
YEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xV
RElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBN
RVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBB
UkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRS
SUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBT
UEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElO
RywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09E
UyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJ
TkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBP
RiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRP
UlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5Z
IFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VE
IE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29u
ZmlnLmgiCisjaW5jbHVkZSAiRXZlbnRMb29wLmgiCisKKyNpZiBPUyhXSU5ET1dTKQorI2luY2x1
ZGUgPHdpbmRvd3MuaD4KKyNlbGlmIFVTRShDRikKKyNpbmNsdWRlIDxDb3JlRm91bmRhdGlvbi9D
RlJ1bkxvb3AuaD4KKyNlbGlmIFBMQVRGT1JNKEVGTCkKKyNpbmNsdWRlIDxFY29yZS5oPgorI2Vs
aWYgUExBVEZPUk0oR1RLKQorI2luY2x1ZGUgPGdsaWIuaD4KKyNlbmRpZgorCituYW1lc3BhY2Ug
SW5zcGVjdG9yIHsKKwordm9pZCBFdmVudExvb3A6OmN5Y2xlKCkKK3sKKyNpZiBPUyhXSU5ET1dT
KQorICAgIE1TRyBtc2c7CisgICAgaWYgKCFHZXRNZXNzYWdlKCZtc2csIDAsIDAsIDApKSB7Cisg
ICAgICAgIG1fZW5kZWQgPSB0cnVlOworICAgICAgICByZXR1cm47CisgICAgfQorICAgIFRyYW5z
bGF0ZU1lc3NhZ2UoJm1zZyk7CisgICAgRGlzcGF0Y2hNZXNzYWdlKCZtc2cpOworI2VsaWYgVVNF
KENGKQorICAgIENGVGltZUludGVydmFsIHRpbWVJbnRlcnZhbCA9IDAuMDU7CisgICAgQ0ZSdW5M
b29wUnVuSW5Nb2RlKGtDRlJ1bkxvb3BEZWZhdWx0TW9kZSwgdGltZUludGVydmFsLCB0cnVlKTsK
KyNlbGlmIFBMQVRGT1JNKEVGTCkKKyAgICBlY29yZV9tYWluX2xvb3BfaXRlcmF0ZSgpOworI2Vs
aWYgUExBVEZPUk0oR1RLKQorICAgIGdfbWFpbl9jb250ZXh0X2l0ZXJhdGlvbihOVUxMLCBGQUxT
RSk7CisjZW5kaWYKK30KKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0V2ZW50TG9vcC5oIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9FdmVudExvb3AuaApuZXcgZmlsZSBtb2RlIDEwMDY0NAppbmRl
eCAwMDAwMDAwLi5hMDMyNzJjCi0tLSAvZGV2L251bGwKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9FdmVudExvb3AuaApAQCAtMCwwICsxLDUwIEBACisvKgorICogQ29weXJp
Z2h0IChDKSAyMDA4IEFwcGxlIEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRp
c3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdp
dGhvdXQKKyAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBm
b2xsb3dpbmcgY29uZGl0aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBv
ZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3Rp
Y2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIu
CisgKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhl
IGFib3ZlIGNvcHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBh
bmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBh
bmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAq
CisgKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFO
RCBBTlkKKyAqIEVYUFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBO
T1QgTElNSVRFRCBUTywgVEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklM
SVRZIEFORCBGSVRORVNTIEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlN
RUQuICBJTiBOTyBFVkVOVCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKKyAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKKyAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBFdmVudExvb3BfaAorI2Rl
ZmluZSBFdmVudExvb3BfaAorCisjaW5jbHVkZSA8d3RmL05vbmNvcHlhYmxlLmg+CisKK25hbWVz
cGFjZSBJbnNwZWN0b3IgeworCitjbGFzcyBFdmVudExvb3AgeworICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEV2ZW50TG9vcCk7CitwdWJsaWM6CisgICAgRXZlbnRMb29wKCkKKyAgICAgICAgOiBt
X2VuZGVkKGZhbHNlKQorICAgIHsKKyAgICB9CisKKyAgICB2b2lkIGN5Y2xlKCk7CisgICAgYm9v
bCBlbmRlZCgpIGNvbnN0IHsgcmV0dXJuIG1fZW5kZWQ7IH0KKworcHJpdmF0ZToKKyAgICBib29s
IG1fZW5kZWQ7Cit9OworCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEV2
ZW50TG9vcF9oCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pT
R2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXgg
YWY1ZWViZi4uNDI0YTg3ZiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9KU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
LmNwcApAQCAtMzUsNiArMzUsNyBAQAogI2luY2x1ZGUgIkluc3BlY3RvckJhY2tlbmREaXNwYXRj
aGVyLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsLmgiCiAjaW5jbHVkZSAi
SlNHbG9iYWxPYmplY3QuaCIKKyNpbmNsdWRlICJKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQu
aCIKICNpbmNsdWRlICJKU0dsb2JhbE9iamVjdFJ1bnRpbWVBZ2VudC5oIgogCiB1c2luZyBuYW1l
c3BhY2UgSlNDOwpAQCAtNDcsNyArNDgsMTYgQEAgSlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250
cm9sbGVyOjpKU0dsb2JhbE9iamVjdEluc3BlY3RvckNvbnRyb2xsZXIoSlNHbG9iYWxPYmoKICAg
ICAsIG1faW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsKG51bGxwdHIpCiB7CiAgICAgbV9hZ2VudHMu
YXBwZW5kKHN0ZDo6bWFrZV91bmlxdWU8SW5zcGVjdG9yQWdlbnQ+KCkpOwotICAgIG1fYWdlbnRz
LmFwcGVuZChzdGQ6Om1ha2VfdW5pcXVlPEpTR2xvYmFsT2JqZWN0UnVudGltZUFnZW50PihtX2lu
amVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSwgbV9nbG9iYWxPYmplY3QpKTsKKworICAgIGF1dG8g
cnVudGltZUFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9iamVjdFJ1bnRpbWVB
Z2VudD4obV9pbmplY3RlZFNjcmlwdE1hbmFnZXIuZ2V0KCksIG1fZ2xvYmFsT2JqZWN0KTsKKyAg
ICBJbnNwZWN0b3JSdW50aW1lQWdlbnQqIHJ1bnRpbWVBZ2VudCA9IHJ1bnRpbWVBZ2VudFB0ci5n
ZXQoKTsKKyAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptb3ZlKHJ1bnRpbWVBZ2VudFB0cikpOwor
CisgICAgYXV0byBkZWJ1Z2dlckFnZW50UHRyID0gc3RkOjptYWtlX3VuaXF1ZTxKU0dsb2JhbE9i
amVjdERlYnVnZ2VyQWdlbnQ+KG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpLCBtX2dsb2Jh
bE9iamVjdCk7CisgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGRl
YnVnZ2VyQWdlbnRQdHIuZ2V0KCk7CisgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bW92ZShkZWJ1
Z2dlckFnZW50UHRyKSk7CisKKyAgICBydW50aW1lQWdlbnQtPnNldFNjcmlwdERlYnVnU2VydmVy
KCZkZWJ1Z2dlckFnZW50LT5zY3JpcHREZWJ1Z1NlcnZlcigpKTsKIH0KIAogSlNHbG9iYWxPYmpl
Y3RJbnNwZWN0b3JDb250cm9sbGVyOjp+SlNHbG9iYWxPYmplY3RJbnNwZWN0b3JDb250cm9sbGVy
KCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSlNHbG9iYWxP
YmplY3RTY3JpcHREZWJ1Z1NlcnZlci5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuY3BwCm5ldyBmaWxlIG1vZGUgMTAw
NjQ0CmluZGV4IDAwMDAwMDAuLjI1NGEyYzcKLS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXIuY3Bw
CkBAIC0wLDAgKzEsODkgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBB
bGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291
cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBh
cmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBh
cmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWlu
IHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlv
bnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBp
biBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBu
b3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWlt
ZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJv
dmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJP
VklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBM
SUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElN
UExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFS
VElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQ
UExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
CisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
KyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgiCisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3RTY3Jp
cHREZWJ1Z1NlcnZlci5oIgorCisjaWYgRU5BQkxFKElOU1BFQ1RPUikKKyNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikKKworI2luY2x1ZGUgIkV2ZW50TG9vcC5oIgorCit1c2luZyBuYW1l
c3BhY2UgSlNDOworCituYW1lc3BhY2UgSW5zcGVjdG9yIHsKKworSlNHbG9iYWxPYmplY3RTY3Jp
cHREZWJ1Z1NlcnZlcjo6SlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcihKU0dsb2JhbE9i
amVjdCYgZ2xvYmFsT2JqZWN0KQorICAgIDogU2NyaXB0RGVidWdTZXJ2ZXIoZmFsc2UpCisgICAg
LCBtX2dsb2JhbE9iamVjdChnbG9iYWxPYmplY3QpCit7Cit9CisKK3ZvaWQgSlNHbG9iYWxPYmpl
Y3RTY3JpcHREZWJ1Z1NlcnZlcjo6YWRkTGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlz
dGVuZXIpCit7CisgICAgaWYgKCFsaXN0ZW5lcikKKyAgICAgICAgcmV0dXJuOworCisgICAgYm9v
bCB3YXNFbXB0eSA9IG1fbGlzdGVuZXJzLmlzRW1wdHkoKTsKKyAgICBtX2xpc3RlbmVycy5hZGQo
bGlzdGVuZXIpOworCisgICAgLy8gRmlyc3QgbGlzdGVuZXIuIEF0dGFjaCB0aGUgZGVidWdnZXIg
dG8gdGhlIEpTR2xvYmFsT2JqZWN0LgorICAgIGlmICh3YXNFbXB0eSkgeworICAgICAgICBhdHRh
Y2goJm1fZ2xvYmFsT2JqZWN0KTsKKyAgICAgICAgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMoKTsK
KyAgICB9Cit9CisKK3ZvaWQgSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcjo6cmVtb3Zl
TGlzdGVuZXIoU2NyaXB0RGVidWdMaXN0ZW5lciogbGlzdGVuZXIsIGJvb2wgaXNCZWluZ0Rlc3Ry
b3llZCkKK3sKKyAgICBpZiAoIWxpc3RlbmVyKQorICAgICAgICByZXR1cm47CisKKyAgICBtX2xp
c3RlbmVycy5yZW1vdmUobGlzdGVuZXIpOworCisgICAgLy8gTGFzdCBsaXN0ZW5lci4gRGV0YWNo
IHRoZSBkZWJ1Z2dlciBmcm9tIHRoZSBKU0dsb2JhbE9iamVjdC4KKyAgICBpZiAobV9saXN0ZW5l
cnMuaXNFbXB0eSgpKSB7CisgICAgICAgIGRldGFjaCgmbV9nbG9iYWxPYmplY3QsIGlzQmVpbmdE
ZXN0cm95ZWQgPyBEZWJ1Z2dlcjo6R2xvYmFsT2JqZWN0SXNEZXN0cnVjdGluZyA6IERlYnVnZ2Vy
OjpUZXJtaW5hdGluZ0RlYnVnZ2luZ1Nlc3Npb24pOworICAgICAgICBpZiAoIWlzQmVpbmdEZXN0
cm95ZWQpCisgICAgICAgICAgICByZWNvbXBpbGVBbGxKU0Z1bmN0aW9ucygpOworICAgIH0KK30K
Kwordm9pZCBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyOjpyZWNvbXBpbGVBbGxKU0Z1
bmN0aW9ucygpCit7CisgICAgSlNDOjpEZWJ1Z2dlcjo6cmVjb21waWxlQWxsSlNGdW5jdGlvbnMo
Jm1fZ2xvYmFsT2JqZWN0LnZtKCkpOworfQorCit2b2lkIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVi
dWdTZXJ2ZXI6OnJ1bkV2ZW50TG9vcFdoaWxlUGF1c2VkKCkKK3sKKyAgICBFdmVudExvb3AgbG9v
cDsKKyAgICB3aGlsZSAoIW1fZG9uZVByb2Nlc3NpbmdEZWJ1Z2dlckV2ZW50cyAmJiAhbG9vcC5l
bmRlZCgpKQorICAgICAgICBsb29wLmN5Y2xlKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIEluc3Bl
Y3RvcgorCisjZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCisjZW5kaWYgLy8g
RU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlci5oIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9KU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVyLmgKbmV3IGZp
bGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAwMC4uMmY1MWFhMDkKLS0tIC9kZXYvbnVsbAorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0pTR2xvYmFsT2JqZWN0U2NyaXB0RGVi
dWdTZXJ2ZXIuaApAQCAtMCwwICsxLDY5IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDE0IEFw
cGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQg
dXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlm
aWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0
aW9ucworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBt
dXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBv
ZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3Ry
aWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdo
dAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2lu
ZyBkaXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0
ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRX
QVJFIElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJF
U1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywg
VEhFCisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNT
IEZPUiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVO
VCBTSEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkg
RElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1Ig
Q09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAq
IFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNF
LCBEQVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVS
IENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENP
TlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VO
Q0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9G
IFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VD
SCBEQU1BR0UuCisgKi8KKworI2lmbmRlZiBKU0dsb2JhbE9iamVjdFNjcmlwdERlYnVnU2VydmVy
X2gKKyNkZWZpbmUgSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcl9oCisKKyNpZiBFTkFC
TEUoSU5TUEVDVE9SKQorI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorCisjaW5jbHVk
ZSAiU2NyaXB0RGVidWdTZXJ2ZXIuaCIKKyNpbmNsdWRlIDx3dGYvRm9yd2FyZC5oPgorCituYW1l
c3BhY2UgSW5zcGVjdG9yIHsKKworY2xhc3MgSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZl
ciBmaW5hbCA6IHB1YmxpYyBTY3JpcHREZWJ1Z1NlcnZlciB7CisgICAgV1RGX01BS0VfTk9OQ09Q
WUFCTEUoSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcik7CitwdWJsaWM6CisgICAgSlNH
bG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcihKU0M6OkpTR2xvYmFsT2JqZWN0Jik7CisgICAg
dmlydHVhbCB+SlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlcigpIHsgfQorCisgICAgdm9p
ZCBhZGRMaXN0ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVyKik7CisgICAgdm9pZCByZW1vdmVMaXN0
ZW5lcihTY3JpcHREZWJ1Z0xpc3RlbmVyKiwgYm9vbCBpc0JlaW5nRGVzdHJveWVkKTsKKworICAg
IEpTQzo6SlNHbG9iYWxPYmplY3QmIGdsb2JhbE9iamVjdCgpIGNvbnN0IHsgcmV0dXJuIG1fZ2xv
YmFsT2JqZWN0OyB9CisKKyAgICB2aXJ0dWFsIHZvaWQgcmVjb21waWxlQWxsSlNGdW5jdGlvbnMo
KSBvdmVycmlkZTsKKworcHJpdmF0ZToKKyAgICB2aXJ0dWFsIExpc3RlbmVyU2V0KiBnZXRMaXN0
ZW5lcnNGb3JHbG9iYWxPYmplY3QoSlNDOjpKU0dsb2JhbE9iamVjdCopIG92ZXJyaWRlIHsgcmV0
dXJuICZtX2xpc3RlbmVyczsgfQorICAgIHZpcnR1YWwgdm9pZCBkaWRQYXVzZShKU0M6OkpTR2xv
YmFsT2JqZWN0Kikgb3ZlcnJpZGUgeyB9CisgICAgdmlydHVhbCB2b2lkIGRpZENvbnRpbnVlKEpT
Qzo6SlNHbG9iYWxPYmplY3QqKSBvdmVycmlkZSB7IH0KKyAgICB2aXJ0dWFsIHZvaWQgcnVuRXZl
bnRMb29wV2hpbGVQYXVzZWQoKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIGJvb2wgaXNDb250ZW50
U2NyaXB0KEpTQzo6RXhlY1N0YXRlKikgY29uc3Qgb3ZlcnJpZGUgeyByZXR1cm4gZmFsc2U7IH0K
KworICAgIC8vIEZJWE1FOiBKYXZhU2NyaXB0IGluc3BlY3Rpb24gaGFzIG5vIENvbnNvbGUgeWV0
LgorICAgIHZpcnR1YWwgdm9pZCByZXBvcnRFeGNlcHRpb24oSlNDOjpFeGVjU3RhdGUqLCBKU0M6
OkpTVmFsdWUpIGNvbnN0IG92ZXJyaWRlIHsgfQorCisgICAgTGlzdGVuZXJTZXQgbV9saXN0ZW5l
cnM7CisgICAgSlNDOjpKU0dsb2JhbE9iamVjdCYgbV9nbG9iYWxPYmplY3Q7Cit9OworCit9IC8v
IG5hbWVzcGFjZSBJbnNwZWN0b3IKKworI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVH
R0VSKQorI2VuZGlmIC8vIEVOQUJMRShJTlNQRUNUT1IpCisKKyNlbmRpZiAvLyBKU0dsb2JhbE9i
amVjdFNjcmlwdERlYnVnU2VydmVyX2gKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwCnNpbWlsYXJpdHkgaW5k
ZXggODAlCnJlbmFtZSBmcm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmNwcApyZW5hbWUgdG8gU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggYjMxN2JkYi4uYTU0ZWM3MyAx
MDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdl
bnQuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuY3BwCkBAIC0zMCwzMSArMzAsMjAgQEAKICNpbmNsdWRlICJjb25m
aWcuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCiAKLSNpZiBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElOU1BFQ1RPUikKKyNpZiBFTkFCTEUoSU5T
UEVDVE9SKQorI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQogCi0jaW5jbHVkZSAiQ2Fj
aGVkUmVzb3VyY2UuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JQYWdlQWdlbnQuaCIKLSNpbmNsdWRl
ICJJbnN0cnVtZW50aW5nQWdlbnRzLmgiCi0jaW5jbHVkZSAiU2NyaXB0QXJndW1lbnRzLmgiCi0j
aW5jbHVkZSAiU291bmQuaCIKLSNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRPYmplY3QuaD4KLSNp
bmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgotI2luY2x1ZGUgPGluc3BlY3Rvci9Db250
ZW50U2VhcmNoVXRpbGl0aWVzLmg+Ci0jaW5jbHVkZSA8aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0
Lmg+Ci0jaW5jbHVkZSA8aW5zcGVjdG9yL0luamVjdGVkU2NyaXB0TWFuYWdlci5oPgotI2luY2x1
ZGUgPGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaD4KLSNpbmNsdWRlIDxpbnNwZWN0b3IvU2Ny
aXB0RGVidWdTZXJ2ZXIuaD4KKyNpbmNsdWRlICJDb250ZW50U2VhcmNoVXRpbGl0aWVzLmgiCisj
aW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHQuaCIKKyNpbmNsdWRlICJJbmplY3RlZFNjcmlwdE1hbmFn
ZXIuaCIKKyNpbmNsdWRlICJJbnNwZWN0b3JWYWx1ZXMuaCIKKyNpbmNsdWRlICJSZWd1bGFyRXhw
cmVzc2lvbi5oIgorI2luY2x1ZGUgIlNjcmlwdERlYnVnU2VydmVyLmgiCisjaW5jbHVkZSAiU2Ny
aXB0T2JqZWN0LmgiCisjaW5jbHVkZSAiU2NyaXB0VmFsdWUuaCIKICNpbmNsdWRlIDx3dGYvdGV4
dC9XVEZTdHJpbmcuaD4KLSNpbmNsdWRlIDx5YXJyL1JlZ3VsYXJFeHByZXNzaW9uLmg+CiAKLXVz
aW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5OwotdXNpbmcgSW5zcGVjdG9yOjpUeXBl
QnVpbGRlcjo6RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlsczsKLXVzaW5nIEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkRlYnVnZ2VyOjpTY3JpcHRJZDsKLXVzaW5nIEluc3BlY3Rvcjo6VHlwZUJ1aWxk
ZXI6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdDsKLQotdXNpbmcgbmFtZXNwYWNlIEluc3BlY3RvcjsK
LQotbmFtZXNwYWNlIFdlYkNvcmUgeworbmFtZXNwYWNlIEluc3BlY3RvciB7CiAKIGNvbnN0IGNo
YXIqIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJhY2t0cmFjZU9iamVjdEdyb3VwID0gImJhY2t0
cmFjZSI7CiAKQEAgLTY0LDE0ICs1MywxNCBAQCBzdGF0aWMgU3RyaW5nIG9iamVjdEdyb3VwRm9y
QnJlYWtwb2ludEFjdGlvbihpbnQgaWRlbnRpZmllcikKICAgICByZXR1cm4gbWFrZVN0cmluZyhv
YmplY3RHcm91cCwgU3RyaW5nOjpudW1iZXIoaWRlbnRpZmllcikpOwogfQogCi1JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMq
IGluc3RydW1lbnRpbmdBZ2VudHMsIEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyKQotICAgIDogSW5zcGVjdG9yQWdlbnRCYXNlKEFTQ0lJTGl0ZXJhbCgiRGVidWdn
ZXIiKSwgaW5zdHJ1bWVudGluZ0FnZW50cykKK0luc3BlY3RvckRlYnVnZ2VyQWdlbnQ6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1h
bmFnZXIpCisgICAgOiBJbnNwZWN0b3JBZ2VudEJhc2UoQVNDSUlMaXRlcmFsKCJEZWJ1Z2dlciIp
KQogICAgICwgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIoaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQor
ICAgICwgbV9saXN0ZW5lcihudWxscHRyKQogICAgICwgbV9wYXVzZWRTY3JpcHRTdGF0ZShudWxs
cHRyKQogICAgICwgbV9jb250aW51ZVRvTG9jYXRpb25CcmVha3BvaW50SUQoSlNDOjpub0JyZWFr
cG9pbnRJRCkKICAgICAsIG1fZW5hYmxlZChmYWxzZSkKICAgICAsIG1famF2YVNjcmlwdFBhdXNl
U2NoZWR1bGVkKGZhbHNlKQotICAgICwgbV9saXN0ZW5lcihudWxscHRyKQogICAgICwgbV9uZXh0
UHJvYmVTYW1wbGVJZCgxKQogICAgICwgbV9uZXh0QnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXIo
MSkKIHsKQEAgLTgxLDEyICs3MCwyNyBAQCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbgogCiBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50Ojp+SW5zcGVjdG9yRGVidWdnZXJBZ2VudCgpCiB7Ci0gICAgQVNT
RVJUKCFtX2luc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKSk7Cit9
CisKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNr
ZW5kKEluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JC
YWNrZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCit7CisgICAgbV9mcm9udGVuZERp
c3BhdGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNw
YXRjaGVyPihmcm9udGVuZENoYW5uZWwpOworICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNw
ZWN0b3JEZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIs
IHRoaXMpOworfQorCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RnJv
bnRlbmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQoreworICAg
IG1fZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKKyAgICBtX2JhY2tlbmREaXNwYXRjaGVy
LmNsZWFyKCk7CisKKyAgICBib29sIHNraXBSZWNvbXBpbGUgPSByZWFzb24gPT0gSW5zcGVjdG9y
RGlzY29ubmVjdFJlYXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkOworICAgIGRpc2FibGUo
c2tpcFJlY29tcGlsZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZW5hYmxl
KCkKIHsKLSAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQodGhpcyk7CisgICAgaWYgKG1fZW5hYmxlZCkKKyAgICAgICAgcmV0dXJuOwogCiAgICAgc2Ny
aXB0RGVidWdTZXJ2ZXIoKS5zZXRCcmVha3BvaW50c0FjdGl2YXRlZCh0cnVlKTsKICAgICBzdGFy
dExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKCk7CkBAIC05OSw4ICsxMDMsMTAgQEAgdm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjplbmFibGUoKQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmRpc2FibGUoYm9vbCBpc0JlaW5nRGVzdHJveWVkKQogeworICAgIGlmICghbV9lbmFi
bGVkKQorICAgICAgICByZXR1cm47CisKICAgICBtX2phdmFTY3JpcHRCcmVha3BvaW50cy5jbGVh
cigpOwotICAgIG1faW5zdHJ1bWVudGluZ0FnZW50cy0+c2V0SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dChudWxscHRyKTsKIAogICAgIHN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcihpc0JlaW5n
RGVzdHJveWVkKTsKICAgICBjbGVhclJlc29sdmVkQnJlYWtwb2ludFN0YXRlKCk7CkBAIC0xMTMs
MzYgKzExOSwxMiBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoYm9vbCBp
c0JlaW5nRGVzdHJveWVkKQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmVuYWJsZShF
cnJvclN0cmluZyopCiB7Ci0gICAgaWYgKG1fZW5hYmxlZCkKLSAgICAgICAgcmV0dXJuOwotCiAg
ICAgZW5hYmxlKCk7Ci0KLSAgICBBU1NFUlQobV9mcm9udGVuZERpc3BhdGNoZXIpOwogfQogCiB2
b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcqKQogewotICAg
IGlmICghbV9lbmFibGVkKQotICAgICAgICByZXR1cm47Ci0KLSAgICBib29sIHNraXBSZWNvbXBp
bGUgPSBmYWxzZTsKLSAgICBkaXNhYmxlKHNraXBSZWNvbXBpbGUpOwotfQotCi12b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmRpZENyZWF0ZUZyb250ZW5kQW5kQmFja2VuZChJbnNwZWN0b3I6
Okluc3BlY3RvckZyb250ZW5kQ2hhbm5lbCogZnJvbnRlbmRDaGFubmVsLCBJbnNwZWN0b3JCYWNr
ZW5kRGlzcGF0Y2hlciogYmFja2VuZERpc3BhdGNoZXIpCi17Ci0gICAgbV9mcm9udGVuZERpc3Bh
dGNoZXIgPSBzdGQ6Om1ha2VfdW5pcXVlPEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRj
aGVyPihmcm9udGVuZENoYW5uZWwpOwotICAgIG1fYmFja2VuZERpc3BhdGNoZXIgPSBJbnNwZWN0
b3JEZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVyOjpjcmVhdGUoYmFja2VuZERpc3BhdGNoZXIsIHRo
aXMpOwotfQotCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OndpbGxEZXN0cm95RnJvbnRl
bmRBbmRCYWNrZW5kKEluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24gcmVhc29uKQotewotICAgIG1f
ZnJvbnRlbmREaXNwYXRjaGVyID0gbnVsbHB0cjsKLSAgICBtX2JhY2tlbmREaXNwYXRjaGVyLmNs
ZWFyKCk7Ci0KLSAgICBib29sIHNraXBSZWNvbXBpbGUgPSByZWFzb24gPT0gSW5zcGVjdG9yRGlz
Y29ubmVjdFJlYXNvbjo6SW5zcGVjdGVkVGFyZ2V0RGVzdHJveWVkOwotICAgIGRpc2FibGUoc2tp
cFJlY29tcGlsZSk7CisgICAgZGlzYWJsZShmYWxzZSk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludHNBY3RpdmUoRXJyb3JTdHJpbmcqLCBib29sIGFjdGl2
ZSkKQEAgLTE1OCwyMyArMTQwLDI0IEBAIGJvb2wgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6aXNQ
YXVzZWQoKQogICAgIHJldHVybiBzY3JpcHREZWJ1Z1NlcnZlcigpLmlzUGF1c2VkKCk7CiB9CiAK
LXZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YWRkTWVzc2FnZVRvQ29uc29sZShNZXNzYWdl
U291cmNlIHNvdXJjZSwgTWVzc2FnZVR5cGUgdHlwZSkKK3ZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6aGFuZGxlQ29uc29sZUFzc2VydCgpCiB7Ci0gICAgaWYgKHNjcmlwdERlYnVnU2VydmVy
KCkucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpICE9IFNjcmlwdERlYnVnU2VydmVyOjpEb250UGF1
c2VPbkV4Y2VwdGlvbnMgJiYgc291cmNlID09IENvbnNvbGVBUElNZXNzYWdlU291cmNlICYmIHR5
cGUgPT0gQXNzZXJ0TWVzc2FnZVR5cGUpCisgICAgaWYgKHNjcmlwdERlYnVnU2VydmVyKCkucGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpICE9IEpTQzo6RGVidWdnZXI6OkRvbnRQYXVzZU9uRXhjZXB0
aW9ucykKICAgICAgICAgYnJlYWtQcm9ncmFtKEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNw
YXRjaGVyOjpSZWFzb246OkFzc2VydCwgbnVsbHB0cik7CiB9CiAKIHN0YXRpYyBQYXNzUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4gYnVpbGRPYmplY3RGb3JCcmVha3BvaW50Q29va2llKGNvbnN0IFN0
cmluZyYgdXJsLCBpbnQgbGluZU51bWJlciwgaW50IGNvbHVtbk51bWJlciwgY29uc3QgU3RyaW5n
JiBjb25kaXRpb24sIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGFjdGlvbnMsIGJvb2wgaXNSZWdl
eCwgYm9vbCBhdXRvQ29udGludWUpCiB7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gYnJl
YWtwb2ludE9iamVjdCA9IEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCk7Ci0gICAgYnJlYWtwb2lu
dE9iamVjdC0+c2V0U3RyaW5nKCJ1cmwiLCB1cmwpOwotICAgIGJyZWFrcG9pbnRPYmplY3QtPnNl
dE51bWJlcigibGluZU51bWJlciIsIGxpbmVOdW1iZXIpOwotICAgIGJyZWFrcG9pbnRPYmplY3Qt
PnNldE51bWJlcigiY29sdW1uTnVtYmVyIiwgY29sdW1uTnVtYmVyKTsKLSAgICBicmVha3BvaW50
T2JqZWN0LT5zZXRTdHJpbmcoImNvbmRpdGlvbiIsIGNvbmRpdGlvbik7Ci0gICAgYnJlYWtwb2lu
dE9iamVjdC0+c2V0Qm9vbGVhbigiaXNSZWdleCIsIGlzUmVnZXgpOwotICAgIGJyZWFrcG9pbnRP
YmplY3QtPnNldEJvb2xlYW4oImF1dG9Db250aW51ZSIsIGF1dG9Db250aW51ZSk7CisgICAgYnJl
YWtwb2ludE9iamVjdC0+c2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgidXJsIiksIHVybCk7CisgICAg
YnJlYWtwb2ludE9iamVjdC0+c2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgibGluZU51bWJlciIpLCBs
aW5lTnVtYmVyKTsKKyAgICBicmVha3BvaW50T2JqZWN0LT5zZXROdW1iZXIoQVNDSUlMaXRlcmFs
KCJjb2x1bW5OdW1iZXIiKSwgY29sdW1uTnVtYmVyKTsKKyAgICBicmVha3BvaW50T2JqZWN0LT5z
ZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJjb25kaXRpb24iKSwgY29uZGl0aW9uKTsKKyAgICBicmVh
a3BvaW50T2JqZWN0LT5zZXRCb29sZWFuKEFTQ0lJTGl0ZXJhbCgiaXNSZWdleCIpLCBpc1JlZ2V4
KTsKKyAgICBicmVha3BvaW50T2JqZWN0LT5zZXRCb29sZWFuKEFTQ0lJTGl0ZXJhbCgiYXV0b0Nv
bnRpbnVlIiksIGF1dG9Db250aW51ZSk7CisKICAgICBpZiAoYWN0aW9ucykKLSAgICAgICAgYnJl
YWtwb2ludE9iamVjdC0+c2V0QXJyYXkoImFjdGlvbnMiLCBhY3Rpb25zKTsKKyAgICAgICAgYnJl
YWtwb2ludE9iamVjdC0+c2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJhY3Rpb25zIiksIGFjdGlvbnMp
OwogCiAgICAgcmV0dXJuIGJyZWFrcG9pbnRPYmplY3Q7CiB9CkBAIC0yMjQsMjQgKzIwNywyNCBA
QCBib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3Rv
Y29sKEVycm9yU3RyaW5nKiBlcnJvclN0cgogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+
IHZhbHVlID0gYWN0aW9ucy0+Z2V0KGkpOwogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiBvYmplY3Q7CiAgICAgICAgIGlmICghdmFsdWUtPmFzT2JqZWN0KCZvYmplY3QpKSB7Ci0gICAg
ICAgICAgICAqZXJyb3JTdHJpbmcgPSAiQnJlYWtwb2ludEFjdGlvbiBvZiBpbmNvcnJlY3QgdHlw
ZSwgZXhwZWN0ZWQgb2JqZWN0IjsKKyAgICAgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0
ZXJhbCgiQnJlYWtwb2ludEFjdGlvbiBvZiBpbmNvcnJlY3QgdHlwZSwgZXhwZWN0ZWQgb2JqZWN0
Iik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICBTdHJp
bmcgdHlwZVN0cmluZzsKLSAgICAgICAgaWYgKCFvYmplY3QtPmdldFN0cmluZygidHlwZSIsICZ0
eXBlU3RyaW5nKSkgewotICAgICAgICAgICAgKmVycm9yU3RyaW5nID0gIkJyZWFrcG9pbnRBY3Rp
b24gaGFkIHR5cGUgbWlzc2luZyI7CisgICAgICAgIGlmICghb2JqZWN0LT5nZXRTdHJpbmcoQVND
SUlMaXRlcmFsKCJ0eXBlIiksICZ0eXBlU3RyaW5nKSkgeworICAgICAgICAgICAgKmVycm9yU3Ry
aW5nID0gQVNDSUlMaXRlcmFsKCJCcmVha3BvaW50QWN0aW9uIGhhZCB0eXBlIG1pc3NpbmciKTsK
ICAgICAgICAgICAgIHJldHVybiBmYWxzZTsKICAgICAgICAgfQogCiAgICAgICAgIFNjcmlwdEJy
ZWFrcG9pbnRBY3Rpb25UeXBlIHR5cGU7CiAgICAgICAgIGlmICghYnJlYWtwb2ludEFjdGlvblR5
cGVGb3JTdHJpbmcodHlwZVN0cmluZywgJnR5cGUpKSB7Ci0gICAgICAgICAgICAqZXJyb3JTdHJp
bmcgPSAiQnJlYWtwb2ludEFjdGlvbiBoYWQgdW5rbm93biB0eXBlIjsKKyAgICAgICAgICAgICpl
cnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQnJlYWtwb2ludEFjdGlvbiBoYWQgdW5rbm93biB0
eXBlIik7CiAgICAgICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgICAgIH0KIAogICAgICAgICBT
dHJpbmcgZGF0YTsKLSAgICAgICAgb2JqZWN0LT5nZXRTdHJpbmcoImRhdGEiLCAmZGF0YSk7Cisg
ICAgICAgIG9iamVjdC0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgiZGF0YSIpLCAmZGF0YSk7CiAK
ICAgICAgICAgcmVzdWx0LT5hcHBlbmQoU2NyaXB0QnJlYWtwb2ludEFjdGlvbih0eXBlLCBtX25l
eHRCcmVha3BvaW50QWN0aW9uSWRlbnRpZmllcisrLCBkYXRhKSk7CiAgICAgfQpAQCAtMjUxLDkg
KzIzNCw5IEBAIGJvb2wgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvbnNG
cm9tUHJvdG9jb2woRXJyb3JTdHJpbmcqIGVycm9yU3RyCiAKIHZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgaW50
IGxpbmVOdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmlu
ZyogY29uc3Qgb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVt
bk51bWJlciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4qIG9wdGlvbnMsIEluc3BlY3Rv
cjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVu
dGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucywgUmVmUHRyPEluc3Bl
Y3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkRlYnVnZ2Vy
OjpCcmVha3BvaW50QWN0aW9uSWRlbnRpZmllcj4+JiBicmVha3BvaW50QWN0aW9uSWRlbnRpZmll
cnMpCiB7Ci0gICAgbG9jYXRpb25zID0gQXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVi
dWdnZXI6OkxvY2F0aW9uPjo6Y3JlYXRlKCk7CisgICAgbG9jYXRpb25zID0gSW5zcGVjdG9yOjpU
eXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0
aW9uPjo6Y3JlYXRlKCk7CiAgICAgaWYgKCFvcHRpb25hbFVSTCA9PSAhb3B0aW9uYWxVUkxSZWdl
eCkgewotICAgICAgICAqZXJyb3JTdHJpbmcgPSAiRWl0aGVyIHVybCBvciB1cmxSZWdleCBtdXN0
IGJlIHNwZWNpZmllZC4iOworICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkVp
dGhlciB1cmwgb3IgdXJsUmVnZXggbXVzdCBiZSBzcGVjaWZpZWQuIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CiAKQEAgLTI2Myw3ICsyNDYsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBsaQog
CiAgICAgU3RyaW5nIGJyZWFrcG9pbnRJZGVudGlmaWVyID0gKGlzUmVnZXggPyAiLyIgKyB1cmwg
KyAiLyIgOiB1cmwpICsgJzonICsgU3RyaW5nOjpudW1iZXIobGluZU51bWJlcikgKyAnOicgKyBT
dHJpbmc6Om51bWJlcihjb2x1bW5OdW1iZXIpOwogICAgIGlmIChtX2phdmFTY3JpcHRCcmVha3Bv
aW50cy5jb250YWlucyhicmVha3BvaW50SWRlbnRpZmllcikpIHsKLSAgICAgICAgKmVycm9yU3Ry
aW5nID0gIkJyZWFrcG9pbnQgYXQgc3BlY2lmaWVkIGxvY2F0aW9uIGFscmVhZHkgZXhpc3RzLiI7
CisgICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQnJlYWtwb2ludCBhdCBzcGVj
aWZpZWQgbG9jYXRpb24gYWxyZWFkeSBleGlzdHMuIik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAKQEAgLTI3MSw5ICsyNTQsOSBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJy
ZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGludCBsaQogICAgIGJvb2wg
YXV0b0NvbnRpbnVlID0gZmFsc2U7CiAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBhY3Rpb25z
OwogICAgIGlmIChvcHRpb25zKSB7Ci0gICAgICAgICgqb3B0aW9ucyktPmdldFN0cmluZygiY29u
ZGl0aW9uIiwgJmNvbmRpdGlvbik7Ci0gICAgICAgICgqb3B0aW9ucyktPmdldEJvb2xlYW4oImF1
dG9Db250aW51ZSIsICZhdXRvQ29udGludWUpOwotICAgICAgICBhY3Rpb25zID0gKCpvcHRpb25z
KS0+Z2V0QXJyYXkoImFjdGlvbnMiKTsKKyAgICAgICAgKCpvcHRpb25zKS0+Z2V0U3RyaW5nKEFT
Q0lJTGl0ZXJhbCgiY29uZGl0aW9uIiksICZjb25kaXRpb24pOworICAgICAgICAoKm9wdGlvbnMp
LT5nZXRCb29sZWFuKEFTQ0lJTGl0ZXJhbCgiYXV0b0NvbnRpbnVlIiksICZhdXRvQ29udGludWUp
OworICAgICAgICBhY3Rpb25zID0gKCpvcHRpb25zKS0+Z2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJh
Y3Rpb25zIikpOwogICAgIH0KIAogICAgIFZlY3RvcjxTY3JpcHRCcmVha3BvaW50QWN0aW9uPiBi
cmVha3BvaW50QWN0aW9uczsKQEAgLTMwMiwxNSArMjg1LDE1IEBAIHZvaWQgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywg
aW50IGxpCiBzdGF0aWMgYm9vbCBwYXJzZUxvY2F0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZywgSW5zcGVjdG9yT2JqZWN0KiBsb2NhdGlvbiwgSlNDOjpTb3VyY2VJRCogc291cmNlSUQsIHVu
c2lnbmVkKiBsaW5lTnVtYmVyLCB1bnNpZ25lZCogY29sdW1uTnVtYmVyKQogewogICAgIFN0cmlu
ZyBzY3JpcHRJRFN0cjsKLSAgICBpZiAoIWxvY2F0aW9uLT5nZXRTdHJpbmcoInNjcmlwdElkIiwg
JnNjcmlwdElEU3RyKSB8fCAhbG9jYXRpb24tPmdldE51bWJlcigibGluZU51bWJlciIsIGxpbmVO
dW1iZXIpKSB7Ci0gICAgICAgIC8vIEZJWE1FOiByZXBsYWNlIHdpdGggaW5wdXQgdmFsaWRhdGlv
bi4KKyAgICBpZiAoIWxvY2F0aW9uLT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JpcHRJZCIp
LCAmc2NyaXB0SURTdHIpIHx8ICFsb2NhdGlvbi0+Z2V0TnVtYmVyKEFTQ0lJTGl0ZXJhbCgibGlu
ZU51bWJlciIpLCBsaW5lTnVtYmVyKSkgewogICAgICAgICAqc291cmNlSUQgPSBKU0M6Om5vU291
cmNlSUQ7Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJzY3JpcHRJZCBhbmQgbGluZU51bWJlciBh
cmUgcmVxdWlyZWQuIjsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJzY3Jp
cHRJZCBhbmQgbGluZU51bWJlciBhcmUgcmVxdWlyZWQuIik7CiAgICAgICAgIHJldHVybiBmYWxz
ZTsKICAgICB9CisKICAgICAqc291cmNlSUQgPSBzY3JpcHRJRFN0ci50b0ludFB0cigpOwogICAg
ICpjb2x1bW5OdW1iZXIgPSAwOwotICAgIGxvY2F0aW9uLT5nZXROdW1iZXIoImNvbHVtbk51bWJl
ciIsIGNvbHVtbk51bWJlcik7CisgICAgbG9jYXRpb24tPmdldE51bWJlcihBU0NJSUxpdGVyYWwo
ImNvbHVtbk51bWJlciIpLCBjb2x1bW5OdW1iZXIpOwogICAgIHJldHVybiB0cnVlOwogfQogCkBA
IC0zMTksNyArMzAyLDYgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3Bv
aW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHQKICAgICBKU0M6OlNvdXJj
ZUlEIHNvdXJjZUlEOwogICAgIHVuc2lnbmVkIGxpbmVOdW1iZXI7CiAgICAgdW5zaWduZWQgY29s
dW1uTnVtYmVyOwotCiAgICAgaWYgKCFwYXJzZUxvY2F0aW9uKGVycm9yU3RyaW5nLCBsb2NhdGlv
bi5nZXQoKSwgJnNvdXJjZUlELCAmbGluZU51bWJlciwgJmNvbHVtbk51bWJlcikpCiAgICAgICAg
IHJldHVybjsKIApAQCAtMzI3LDMxICszMDksMzMgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QgUmVmUHQK
ICAgICBib29sIGF1dG9Db250aW51ZSA9IGZhbHNlOwogICAgIFJlZlB0cjxJbnNwZWN0b3JBcnJh
eT4gYWN0aW9uczsKICAgICBpZiAob3B0aW9ucykgewotICAgICAgICAoKm9wdGlvbnMpLT5nZXRT
dHJpbmcoImNvbmRpdGlvbiIsICZjb25kaXRpb24pOwotICAgICAgICAoKm9wdGlvbnMpLT5nZXRC
b29sZWFuKCJhdXRvQ29udGludWUiLCAmYXV0b0NvbnRpbnVlKTsKLSAgICAgICAgYWN0aW9ucyA9
ICgqb3B0aW9ucyktPmdldEFycmF5KCJhY3Rpb25zIik7CisgICAgICAgICgqb3B0aW9ucyktPmdl
dFN0cmluZyhBU0NJSUxpdGVyYWwoImNvbmRpdGlvbiIpLCAmY29uZGl0aW9uKTsKKyAgICAgICAg
KCpvcHRpb25zKS0+Z2V0Qm9vbGVhbihBU0NJSUxpdGVyYWwoImF1dG9Db250aW51ZSIpLCAmYXV0
b0NvbnRpbnVlKTsKKyAgICAgICAgYWN0aW9ucyA9ICgqb3B0aW9ucyktPmdldEFycmF5KEFTQ0lJ
TGl0ZXJhbCgiYWN0aW9ucyIpKTsKICAgICB9CiAKICAgICBWZWN0b3I8U2NyaXB0QnJlYWtwb2lu
dEFjdGlvbj4gYnJlYWtwb2ludEFjdGlvbnM7CiAgICAgaWYgKCFicmVha3BvaW50QWN0aW9uc0Zy
b21Qcm90b2NvbChlcnJvclN0cmluZywgYWN0aW9ucywgJmJyZWFrcG9pbnRBY3Rpb25zKSkKICAg
ICAgICAgcmV0dXJuOwotICAgIAorCiAgICAgYnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXJzID0g
SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVi
dWdnZXI6OkJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVyPjo6Y3JlYXRlKCk7CiAgICAgZm9yIChT
Y3JpcHRCcmVha3BvaW50QWN0aW9uJiBhY3Rpb24gOiBicmVha3BvaW50QWN0aW9ucykKICAgICAg
ICAgYnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXJzLT5hZGRJdGVtKGFjdGlvbi5pZGVudGlmaWVy
KTsKIAogICAgIFN0cmluZyBicmVha3BvaW50SWRlbnRpZmllciA9IFN0cmluZzo6bnVtYmVyKHNv
dXJjZUlEKSArICc6JyArIFN0cmluZzo6bnVtYmVyKGxpbmVOdW1iZXIpICsgJzonICsgU3RyaW5n
OjpudW1iZXIoY29sdW1uTnVtYmVyKTsKICAgICBpZiAobV9icmVha3BvaW50SWRlbnRpZmllclRv
RGVidWdTZXJ2ZXJCcmVha3BvaW50SURzLmZpbmQoYnJlYWtwb2ludElkZW50aWZpZXIpICE9IG1f
YnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtwb2ludElEcy5lbmQoKSkgewot
ICAgICAgICAqZXJyb3JTdHJpbmcgPSAiQnJlYWtwb2ludCBhdCBzcGVjaWZpZWQgbG9jYXRpb24g
YWxyZWFkeSBleGlzdHMuIjsKKyAgICAgICAgKmVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJC
cmVha3BvaW50IGF0IHNwZWNpZmllZCBsb2NhdGlvbiBhbHJlYWR5IGV4aXN0cy4iKTsKICAgICAg
ICAgcmV0dXJuOwogICAgIH0KIAogICAgIFNjcmlwdEJyZWFrcG9pbnQgYnJlYWtwb2ludChsaW5l
TnVtYmVyLCBjb2x1bW5OdW1iZXIsIGNvbmRpdGlvbiwgYnJlYWtwb2ludEFjdGlvbnMsIGF1dG9D
b250aW51ZSk7CiAgICAgYWN0dWFsTG9jYXRpb24gPSByZXNvbHZlQnJlYWtwb2ludChicmVha3Bv
aW50SWRlbnRpZmllciwgc291cmNlSUQsIGJyZWFrcG9pbnQpOwotICAgIGlmIChhY3R1YWxMb2Nh
dGlvbikKLSAgICAgICAgKm91dEJyZWFrcG9pbnRJZGVudGlmaWVyID0gYnJlYWtwb2ludElkZW50
aWZpZXI7Ci0gICAgZWxzZQotICAgICAgICAqZXJyb3JTdHJpbmcgPSAiQ291bGQgbm90IHJlc29s
dmUgYnJlYWtwb2ludCI7CisgICAgaWYgKCFhY3R1YWxMb2NhdGlvbikgeworICAgICAgICAqZXJy
b3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkNvdWxkIG5vdCByZXNvbHZlIGJyZWFrcG9pbnQiKTsK
KyAgICAgICAgcmV0dXJuOworICAgIH0KKworICAgICpvdXRCcmVha3BvaW50SWRlbnRpZmllciA9
IGJyZWFrcG9pbnRJZGVudGlmaWVyOwogfQogCiB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OnJlbW92ZUJyZWFrcG9pbnQoRXJyb3JTdHJpbmcqLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJ
ZGVudGlmaWVyKQpAQCAtMzc4LDcgKzM2Miw2IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6Y29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZywgY29uc3QKICAg
ICBKU0M6OlNvdXJjZUlEIHNvdXJjZUlEOwogICAgIHVuc2lnbmVkIGxpbmVOdW1iZXI7CiAgICAg
dW5zaWduZWQgY29sdW1uTnVtYmVyOwotCiAgICAgaWYgKCFwYXJzZUxvY2F0aW9uKGVycm9yU3Ry
aW5nLCBsb2NhdGlvbi5nZXQoKSwgJnNvdXJjZUlELCAmbGluZU51bWJlciwgJmNvbHVtbk51bWJl
cikpCiAgICAgICAgIHJldHVybjsKIApAQCAtNDE0LDcgKzM5Nyw3IEBAIFBhc3NSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkxvY2F0aW9uPiBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpyCiAgICAgcmV0dXJuIGxvY2F0aW9uOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OnNlYXJjaEluQ29udGVudChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IFN0cmlu
ZyYgc2NyaXB0SURTdHIsIGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIGNvbnN0IG9w
dGlvbmFsQ2FzZVNlbnNpdGl2ZSwgY29uc3QgYm9vbCogY29uc3Qgb3B0aW9uYWxJc1JlZ2V4LCBS
ZWZQdHI8QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6R2VuZXJpY1R5cGVzOjpTZWFyY2hN
YXRjaD4+JiByZXN1bHRzKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZWFyY2hJbkNv
bnRlbnQoRXJyb3JTdHJpbmcqIGVycm9yLCBjb25zdCBTdHJpbmcmIHNjcmlwdElEU3RyLCBjb25z
dCBTdHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBjb25zdCBvcHRpb25hbENhc2VTZW5zaXRpdmUs
IGNvbnN0IGJvb2wqIGNvbnN0IG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkdlbmVyaWNUeXBlczo6U2Vh
cmNoTWF0Y2g+PiYgcmVzdWx0cykKIHsKICAgICBib29sIGlzUmVnZXggPSBvcHRpb25hbElzUmVn
ZXggPyAqb3B0aW9uYWxJc1JlZ2V4IDogZmFsc2U7CiAgICAgYm9vbCBjYXNlU2Vuc2l0aXZlID0g
b3B0aW9uYWxDYXNlU2Vuc2l0aXZlID8gKm9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSA6IGZhbHNlOwpA
QCAtNDQxLDkgKzQyNCwxMCBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmdldEZ1bmN0
aW9uRGV0YWlscyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0CiB7CiAgICAgSW5qZWN0
ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0
ZWRTY3JpcHRGb3JPYmplY3RJZChmdW5jdGlvbklkKTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQu
aGFzTm9WYWx1ZSgpKSB7Ci0gICAgICAgICplcnJvclN0cmluZyA9ICJGdW5jdGlvbiBvYmplY3Qg
aWQgaXMgb2Jzb2xldGUiOworICAgICAgICAqZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkZ1
bmN0aW9uIG9iamVjdCBpZCBpcyBvYnNvbGV0ZSIpOwogICAgICAgICByZXR1cm47CiAgICAgfQor
CiAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0RnVuY3Rpb25EZXRhaWxzKGVycm9yU3RyaW5nLCBmdW5j
dGlvbklkLCAmZGV0YWlscyk7CiB9CiAKQEAgLTQ1MSw2ICs0MzUsNyBAQCB2b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OnNjaGVkdWxlUGF1c2VPbk5leHRTdGF0ZW1lbnQoSW5zcGVjdG9yRGVi
dWdnZXJGcm9udAogewogICAgIGlmIChtX2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZCkKICAgICAg
ICAgcmV0dXJuOworCiAgICAgbV9icmVha1JlYXNvbiA9IGJyZWFrUmVhc29uOwogICAgIG1fYnJl
YWtBdXhEYXRhID0gZGF0YTsKICAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnNldFBhdXNlT25OZXh0
U3RhdGVtZW50KHRydWUpOwpAQCAtNDYwLDYgKzQ0NSw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6Y2FuY2VsUGF1c2VPbk5leHRTdGF0ZW1lbnQoKQogewogICAgIGlmIChtX2phdmFT
Y3JpcHRQYXVzZVNjaGVkdWxlZCkKICAgICAgICAgcmV0dXJuOworCiAgICAgY2xlYXJCcmVha0Rl
dGFpbHMoKTsKICAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnNldFBhdXNlT25OZXh0U3RhdGVtZW50
KGZhbHNlKTsKIH0KQEAgLTQ2OCw2ICs0NTQsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OnBhdXNlKEVycm9yU3RyaW5nKikKIHsKICAgICBpZiAobV9qYXZhU2NyaXB0UGF1c2VTY2hl
ZHVsZWQpCiAgICAgICAgIHJldHVybjsKKwogICAgIGNsZWFyQnJlYWtEZXRhaWxzKCk7CiAgICAg
c2NyaXB0RGVidWdTZXJ2ZXIoKS5zZXRQYXVzZU9uTmV4dFN0YXRlbWVudCh0cnVlKTsKICAgICBt
X2phdmFTY3JpcHRQYXVzZVNjaGVkdWxlZCA9IHRydWU7CkBAIC00NzcsNiArNDY0LDcgQEAgdm9p
ZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpyZXN1bWUoRXJyb3JTdHJpbmcqIGVycm9yU3RyaW5n
KQogewogICAgIGlmICghYXNzZXJ0UGF1c2VkKGVycm9yU3RyaW5nKSkKICAgICAgICAgcmV0dXJu
OworCiAgICAgbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPnJlbGVhc2VPYmplY3RHcm91cChJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OjpiYWNrdHJhY2VPYmplY3RHcm91cCk7CiAgICAgc2NyaXB0RGVi
dWdTZXJ2ZXIoKS5jb250aW51ZVByb2dyYW0oKTsKIH0KQEAgLTQ4NSw2ICs0NzMsNyBAQCB2b2lk
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnN0ZXBPdmVyKEVycm9yU3RyaW5nKiBlcnJvclN0cmlu
ZykKIHsKICAgICBpZiAoIWFzc2VydFBhdXNlZChlcnJvclN0cmluZykpCiAgICAgICAgIHJldHVy
bjsKKwogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5yZWxlYXNlT2JqZWN0R3JvdXAoSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6YmFja3RyYWNlT2JqZWN0R3JvdXApOwogICAgIHNjcmlwdERl
YnVnU2VydmVyKCkuc3RlcE92ZXJTdGF0ZW1lbnQoKTsKIH0KQEAgLTQ5Myw2ICs0ODIsNyBAQCB2
b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnN0ZXBJbnRvKEVycm9yU3RyaW5nKiBlcnJvclN0
cmluZykKIHsKICAgICBpZiAoIWFzc2VydFBhdXNlZChlcnJvclN0cmluZykpCiAgICAgICAgIHJl
dHVybjsKKwogICAgIG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5yZWxlYXNlT2JqZWN0R3JvdXAo
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YmFja3RyYWNlT2JqZWN0R3JvdXApOwogICAgIHNjcmlw
dERlYnVnU2VydmVyKCkuc3RlcEludG9TdGF0ZW1lbnQoKTsKICAgICBtX2xpc3RlbmVyLT5zdGVw
SW50bygpOwpAQCAtNTAyLDQxICs0OTIsNDIgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpzdGVwT3V0KEVycm9yU3RyaW5nKiBlcnJvclN0cmluZykKIHsKICAgICBpZiAoIWFzc2VydFBh
dXNlZChlcnJvclN0cmluZykpCiAgICAgICAgIHJldHVybjsKKwogICAgIG1faW5qZWN0ZWRTY3Jp
cHRNYW5hZ2VyLT5yZWxlYXNlT2JqZWN0R3JvdXAoSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6YmFj
a3RyYWNlT2JqZWN0R3JvdXApOwogICAgIHNjcmlwdERlYnVnU2VydmVyKCkuc3RlcE91dE9mRnVu
Y3Rpb24oKTsKIH0KIAogdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRQYXVzZU9uRXhj
ZXB0aW9ucyhFcnJvclN0cmluZyogZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc3RyaW5nUGF1
c2VTdGF0ZSkKIHsKLSAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZSBwYXVzZVN0YXRlOworICAgIEpTQzo6RGVidWdnZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGUg
cGF1c2VTdGF0ZTsKICAgICBpZiAoc3RyaW5nUGF1c2VTdGF0ZSA9PSAibm9uZSIpCi0gICAgICAg
IHBhdXNlU3RhdGUgPSBTY3JpcHREZWJ1Z1NlcnZlcjo6RG9udFBhdXNlT25FeGNlcHRpb25zOwor
ICAgICAgICBwYXVzZVN0YXRlID0gSlNDOjpEZWJ1Z2dlcjo6RG9udFBhdXNlT25FeGNlcHRpb25z
OwogICAgIGVsc2UgaWYgKHN0cmluZ1BhdXNlU3RhdGUgPT0gImFsbCIpCi0gICAgICAgIHBhdXNl
U3RhdGUgPSBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPbkFsbEV4Y2VwdGlvbnM7CisgICAgICAg
IHBhdXNlU3RhdGUgPSBKU0M6OkRlYnVnZ2VyOjpQYXVzZU9uQWxsRXhjZXB0aW9uczsKICAgICBl
bHNlIGlmIChzdHJpbmdQYXVzZVN0YXRlID09ICJ1bmNhdWdodCIpCi0gICAgICAgIHBhdXNlU3Rh
dGUgPSBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1c2VPblVuY2F1Z2h0RXhjZXB0aW9uczsKKyAgICAg
ICAgcGF1c2VTdGF0ZSA9IEpTQzo6RGVidWdnZXI6OlBhdXNlT25VbmNhdWdodEV4Y2VwdGlvbnM7
CiAgICAgZWxzZSB7CiAgICAgICAgICplcnJvclN0cmluZyA9ICJVbmtub3duIHBhdXNlIG9uIGV4
Y2VwdGlvbnMgbW9kZTogIiArIHN0cmluZ1BhdXNlU3RhdGU7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAKLSAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnNldFBhdXNlT25FeGNlcHRpb25zU3RhdGUo
c3RhdGljX2Nhc3Q8U2NyaXB0RGVidWdTZXJ2ZXI6OlBhdXNlT25FeGNlcHRpb25zU3RhdGU+KHBh
dXNlU3RhdGUpKTsKKyAgICBzY3JpcHREZWJ1Z1NlcnZlcigpLnNldFBhdXNlT25FeGNlcHRpb25z
U3RhdGUoc3RhdGljX2Nhc3Q8SlNDOjpEZWJ1Z2dlcjo6UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZT4o
cGF1c2VTdGF0ZSkpOwogICAgIGlmIChzY3JpcHREZWJ1Z1NlcnZlcigpLnBhdXNlT25FeGNlcHRp
b25zU3RhdGUoKSAhPSBwYXVzZVN0YXRlKQotICAgICAgICAqZXJyb3JTdHJpbmcgPSAiSW50ZXJu
YWwgZXJyb3IuIENvdWxkIG5vdCBjaGFuZ2UgcGF1c2Ugb24gZXhjZXB0aW9ucyBzdGF0ZSI7Cisg
ICAgICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiSW50ZXJuYWwgZXJyb3IuIENvdWxk
IG5vdCBjaGFuZ2UgcGF1c2Ugb24gZXhjZXB0aW9ucyBzdGF0ZSIpOwogfQogCiB2b2lkIEluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQ6OmV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JTdHJpbmcqIGVycm9y
U3RyaW5nLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24sIGNvbnN0IFN0cmluZyogY29uc3Qgb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGNvbnN0IGlu
Y2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0
aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25z
dCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpS
dW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9w
dE91dHB1dDxib29sPiogd2FzVGhyb3duKQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVk
U2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0
SWQoY2FsbEZyYW1lSWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsK
LSAgICAgICAgKmVycm9yU3RyaW5nID0gIkluc3BlY3RlZCBmcmFtZSBoYXMgZ29uZSI7CisgICAg
ICAgICplcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiSW5zcGVjdGVkIGZyYW1lIGhhcyBnb25l
Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAgICBTY3JpcHREZWJ1Z1NlcnZlcjo6UGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSBwcmV2aW91c1BhdXNlT25FeGNlcHRpb25zU3RhdGUgPSBzY3Jp
cHREZWJ1Z1NlcnZlcigpLnBhdXNlT25FeGNlcHRpb25zU3RhdGUoKTsKKyAgICBKU0M6OkRlYnVn
Z2VyOjpQYXVzZU9uRXhjZXB0aW9uc1N0YXRlIHByZXZpb3VzUGF1c2VPbkV4Y2VwdGlvbnNTdGF0
ZSA9IHNjcmlwdERlYnVnU2VydmVyKCkucGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZSgpOwogICAgIGlm
IChkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUgPyAqZG9Ob3RQYXVzZU9uRXhj
ZXB0aW9uc0FuZE11dGVDb25zb2xlIDogZmFsc2UpIHsKLSAgICAgICAgaWYgKHByZXZpb3VzUGF1
c2VPbkV4Y2VwdGlvbnNTdGF0ZSAhPSBTY3JpcHREZWJ1Z1NlcnZlcjo6RG9udFBhdXNlT25FeGNl
cHRpb25zKQotICAgICAgICAgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5zZXRQYXVzZU9uRXhjZXB0
aW9uc1N0YXRlKFNjcmlwdERlYnVnU2VydmVyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpOworICAg
ICAgICBpZiAocHJldmlvdXNQYXVzZU9uRXhjZXB0aW9uc1N0YXRlICE9IEpTQzo6RGVidWdnZXI6
OkRvbnRQYXVzZU9uRXhjZXB0aW9ucykKKyAgICAgICAgICAgIHNjcmlwdERlYnVnU2VydmVyKCku
c2V0UGF1c2VPbkV4Y2VwdGlvbnNTdGF0ZShKU0M6OkRlYnVnZ2VyOjpEb250UGF1c2VPbkV4Y2Vw
dGlvbnMpOwogICAgICAgICBtdXRlQ29uc29sZSgpOwogICAgIH0KIApAQCAtNTU1LDU0ICs1NDYs
MzcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRPdmVybGF5TWVzc2FnZShFcnJv
clN0cmluZyosIGNvbnN0IFN0cmluZyopCiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6
c2NyaXB0RXhlY3V0aW9uQmxvY2tlZEJ5Q1NQKGNvbnN0IFN0cmluZyYgZGlyZWN0aXZlVGV4dCkK
IHsKLSAgICBpZiAoc2NyaXB0RGVidWdTZXJ2ZXIoKS5wYXVzZU9uRXhjZXB0aW9uc1N0YXRlKCkg
IT0gU2NyaXB0RGVidWdTZXJ2ZXI6OkRvbnRQYXVzZU9uRXhjZXB0aW9ucykgeworICAgIGlmIChz
Y3JpcHREZWJ1Z1NlcnZlcigpLnBhdXNlT25FeGNlcHRpb25zU3RhdGUoKSAhPSBKU0M6OkRlYnVn
Z2VyOjpEb250UGF1c2VPbkV4Y2VwdGlvbnMpIHsKICAgICAgICAgUmVmUHRyPEluc3BlY3Rvck9i
amVjdD4gZGlyZWN0aXZlID0gSW5zcGVjdG9yT2JqZWN0OjpjcmVhdGUoKTsKLSAgICAgICAgZGly
ZWN0aXZlLT5zZXRTdHJpbmcoImRpcmVjdGl2ZVRleHQiLCBkaXJlY3RpdmVUZXh0KTsKKyAgICAg
ICAgZGlyZWN0aXZlLT5zZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJkaXJlY3RpdmVUZXh0IiksIGRp
cmVjdGl2ZVRleHQpOwogICAgICAgICBicmVha1Byb2dyYW0oSW5zcGVjdG9yRGVidWdnZXJGcm9u
dGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6Q1NQVmlvbGF0aW9uLCBkaXJlY3RpdmUucmVsZWFzZSgp
KTsKICAgICB9CiB9CiAKLVBhc3NSZWZQdHI8QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OkNhbGxGcmFtZT4+IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmN1cnJlbnRDYWxs
RnJhbWVzKCkKK1Bhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVj
dG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT4+IEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmN1cnJlbnRDYWxsRnJhbWVzKCkKIHsKICAgICBpZiAoIW1fcGF1c2VkU2NyaXB0U3Rh
dGUpCi0gICAgICAgIHJldHVybiBBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dl
cjo6Q2FsbEZyYW1lPjo6Y3JlYXRlKCk7CisgICAgICAgIHJldHVybiBJbnNwZWN0b3I6OlR5cGVC
dWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6Q2FsbEZyYW1l
Pjo6Y3JlYXRlKCk7CisKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdCA9IG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvcihtX3BhdXNlZFNjcmlwdFN0YXRl
KTsKICAgICBpZiAoaW5qZWN0ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CiAgICAgICAgIEFTU0VS
VF9OT1RfUkVBQ0hFRCgpOwotICAgICAgICByZXR1cm4gQXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVp
bGRlcjo6RGVidWdnZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOworICAgICAgICByZXR1cm4gSW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdn
ZXI6OkNhbGxGcmFtZT46OmNyZWF0ZSgpOwogICAgIH0KKwogICAgIHJldHVybiBpbmplY3RlZFNj
cmlwdC53cmFwQ2FsbEZyYW1lcyhtX2N1cnJlbnRDYWxsU3RhY2spOwogfQogCiBTdHJpbmcgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6c291cmNlTWFwVVJMRm9yU2NyaXB0KGNvbnN0IFNjcmlwdCYg
c2NyaXB0KQogewotICAgIERFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBzb3VyY2VNYXBIVFRQ
SGVhZGVyLCAoQVNDSUlMaXRlcmFsKCJTb3VyY2VNYXAiKSkpOwotICAgIERFRklORV9TVEFUSUNf
TE9DQUwoU3RyaW5nLCBzb3VyY2VNYXBIVFRQSGVhZGVyRGVwcmVjYXRlZCwgKEFTQ0lJTGl0ZXJh
bCgiWC1Tb3VyY2VNYXAiKSkpOwotCi0gICAgaWYgKCFzY3JpcHQudXJsLmlzRW1wdHkoKSkgewot
ICAgICAgICBpZiAoSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQgPSBtX2luc3RydW1lbnRp
bmdBZ2VudHMtPmluc3BlY3RvclBhZ2VBZ2VudCgpKSB7Ci0gICAgICAgICAgICBDYWNoZWRSZXNv
dXJjZSogcmVzb3VyY2UgPSBwYWdlQWdlbnQtPmNhY2hlZFJlc291cmNlKHBhZ2VBZ2VudC0+bWFp
bkZyYW1lKCksIFVSTChQYXJzZWRVUkxTdHJpbmcsIHNjcmlwdC51cmwpKTsKLSAgICAgICAgICAg
IGlmIChyZXNvdXJjZSkgewotICAgICAgICAgICAgICAgIFN0cmluZyBzb3VyY2VNYXBIZWFkZXIg
PSByZXNvdXJjZS0+cmVzcG9uc2UoKS5odHRwSGVhZGVyRmllbGQoc291cmNlTWFwSFRUUEhlYWRl
cik7Ci0gICAgICAgICAgICAgICAgaWYgKCFzb3VyY2VNYXBIZWFkZXIuaXNFbXB0eSgpKQotICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gc291cmNlTWFwSGVhZGVyOwotCi0gICAgICAgICAgICAg
ICAgc291cmNlTWFwSGVhZGVyID0gcmVzb3VyY2UtPnJlc3BvbnNlKCkuaHR0cEhlYWRlckZpZWxk
KHNvdXJjZU1hcEhUVFBIZWFkZXJEZXByZWNhdGVkKTsKLSAgICAgICAgICAgICAgICBpZiAoIXNv
dXJjZU1hcEhlYWRlci5pc0VtcHR5KCkpCi0gICAgICAgICAgICAgICAgICAgIHJldHVybiBzb3Vy
Y2VNYXBIZWFkZXI7Ci0gICAgICAgICAgICB9Ci0gICAgICAgIH0KLSAgICB9Ci0KICAgICByZXR1
cm4gQ29udGVudFNlYXJjaFV0aWxpdGllczo6ZmluZFNjcmlwdFNvdXJjZU1hcFVSTChzY3JpcHQu
c291cmNlKTsKIH0KIAotLy8gSmF2YVNjcmlwdERlYnVnTGlzdGVuZXIgZnVuY3Rpb25zCi0KIHZv
aWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkUGFyc2VTb3VyY2UoSlNDOjpTb3VyY2VJRCBz
b3VyY2VJRCwgY29uc3QgU2NyaXB0JiBpblNjcmlwdCkKIHsKICAgICBTY3JpcHQgc2NyaXB0ID0g
aW5TY3JpcHQ7Ci0gICAgaWYgKCFzY3JpcHQuc3RhcnRMaW5lICYmICFzY3JpcHQuc3RhcnRDb2x1
bW4pCisgICAgLy8gRklYTUU6IFdoeSBkb2VzIC1bSlNDb250ZXh0IGV2YWx1YXRlU2NyaXB0XSBo
YXZlIGEgLTEgc3RhcnRMaW5lPworICAgIGlmIChzY3JpcHQuc3RhcnRMaW5lIDw9IDAgJiYgIXNj
cmlwdC5zdGFydENvbHVtbikKICAgICAgICAgc2NyaXB0LnNvdXJjZVVSTCA9IENvbnRlbnRTZWFy
Y2hVdGlsaXRpZXM6OmZpbmRTY3JpcHRTb3VyY2VVUkwoc2NyaXB0LnNvdXJjZSk7CiAgICAgc2Ny
aXB0LnNvdXJjZU1hcHBpbmdVUkwgPSBzb3VyY2VNYXBVUkxGb3JTY3JpcHQoc2NyaXB0KTsKIApA
QCAtNjIyLDE4ICs1OTYsMTggQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRQYXJz
ZVNvdXJjZShKU0M6OlNvdXJjZUlEIHNvdXJjZUlELCBjb25zdCBTY3JpcHQKICAgICBmb3IgKGF1
dG8gaXQgPSBtX2phdmFTY3JpcHRCcmVha3BvaW50cy5iZWdpbigpLCBlbmQgPSBtX2phdmFTY3Jp
cHRCcmVha3BvaW50cy5lbmQoKTsgaXQgIT0gZW5kOyArK2l0KSB7CiAgICAgICAgIFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+IGJyZWFrcG9pbnRPYmplY3QgPSBpdC0+dmFsdWUtPmFzT2JqZWN0KCk7
CiAgICAgICAgIGJvb2wgaXNSZWdleDsKLSAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0Qm9v
bGVhbigiaXNSZWdleCIsICZpc1JlZ2V4KTsKKyAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0
Qm9vbGVhbihBU0NJSUxpdGVyYWwoImlzUmVnZXgiKSwgJmlzUmVnZXgpOwogICAgICAgICBTdHJp
bmcgdXJsOwotICAgICAgICBicmVha3BvaW50T2JqZWN0LT5nZXRTdHJpbmcoInVybCIsICZ1cmwp
OworICAgICAgICBicmVha3BvaW50T2JqZWN0LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJ1cmwi
KSwgJnVybCk7CiAgICAgICAgIGlmICghbWF0Y2hlcyhzY3JpcHRVUkwsIHVybCwgaXNSZWdleCkp
CiAgICAgICAgICAgICBjb250aW51ZTsKICAgICAgICAgU2NyaXB0QnJlYWtwb2ludCBicmVha3Bv
aW50OwotICAgICAgICBicmVha3BvaW50T2JqZWN0LT5nZXROdW1iZXIoImxpbmVOdW1iZXIiLCAm
YnJlYWtwb2ludC5saW5lTnVtYmVyKTsKLSAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0TnVt
YmVyKCJjb2x1bW5OdW1iZXIiLCAmYnJlYWtwb2ludC5jb2x1bW5OdW1iZXIpOwotICAgICAgICBi
cmVha3BvaW50T2JqZWN0LT5nZXRTdHJpbmcoImNvbmRpdGlvbiIsICZicmVha3BvaW50LmNvbmRp
dGlvbik7Ci0gICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPmdldEJvb2xlYW4oImF1dG9Db250aW51
ZSIsICZicmVha3BvaW50LmF1dG9Db250aW51ZSk7CisgICAgICAgIGJyZWFrcG9pbnRPYmplY3Qt
PmdldE51bWJlcihBU0NJSUxpdGVyYWwoImxpbmVOdW1iZXIiKSwgJmJyZWFrcG9pbnQubGluZU51
bWJlcik7CisgICAgICAgIGJyZWFrcG9pbnRPYmplY3QtPmdldE51bWJlcihBU0NJSUxpdGVyYWwo
ImNvbHVtbk51bWJlciIpLCAmYnJlYWtwb2ludC5jb2x1bW5OdW1iZXIpOworICAgICAgICBicmVh
a3BvaW50T2JqZWN0LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJjb25kaXRpb24iKSwgJmJyZWFr
cG9pbnQuY29uZGl0aW9uKTsKKyAgICAgICAgYnJlYWtwb2ludE9iamVjdC0+Z2V0Qm9vbGVhbihB
U0NJSUxpdGVyYWwoImF1dG9Db250aW51ZSIpLCAmYnJlYWtwb2ludC5hdXRvQ29udGludWUpOwog
ICAgICAgICBFcnJvclN0cmluZyBlcnJvclN0cmluZzsKLSAgICAgICAgUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiBhY3Rpb25zID0gYnJlYWtwb2ludE9iamVjdC0+Z2V0QXJyYXkoImFjdGlvbnMiKTsK
KyAgICAgICAgUmVmUHRyPEluc3BlY3RvckFycmF5PiBhY3Rpb25zID0gYnJlYWtwb2ludE9iamVj
dC0+Z2V0QXJyYXkoQVNDSUlMaXRlcmFsKCJhY3Rpb25zIikpOwogICAgICAgICBpZiAoIWJyZWFr
cG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKCZlcnJvclN0cmluZywgYWN0aW9ucywgJmJyZWFrcG9p
bnQuYWN0aW9ucykpIHsKICAgICAgICAgICAgIEFTU0VSVF9OT1RfUkVBQ0hFRCgpOwogICAgICAg
ICAgICAgY29udGludWU7CkBAIC02NjAsNyArNjM0LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0IERlcHJl
Y2EKICAgICAgICAgSW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2Ny
aXB0TWFuYWdlci0+aW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwogICAgICAgICBpZiAo
IWluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewogICAgICAgICAgICAgbV9icmVha1JlYXNv
biA9IEluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVyOjpSZWFzb246OkV4Y2VwdGlv
bjsKLSAgICAgICAgICAgIG1fYnJlYWtBdXhEYXRhID0gaW5qZWN0ZWRTY3JpcHQud3JhcE9iamVj
dChleGNlcHRpb24sICJiYWNrdHJhY2UiKS0+b3BlbkFjY2Vzc29ycygpOworICAgICAgICAgICAg
bV9icmVha0F1eERhdGEgPSBpbmplY3RlZFNjcmlwdC53cmFwT2JqZWN0KGV4Y2VwdGlvbiwgSW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6YmFja3RyYWNlT2JqZWN0R3JvdXApLT5vcGVuQWNjZXNzb3Jz
KCk7CiAgICAgICAgICAgICAvLyBtX2JyZWFrQXV4RGF0YSBtaWdodCBiZSBudWxsIGFmdGVyIHRo
aXMuCiAgICAgICAgIH0KICAgICB9CkBAIC02NzIsNiArNjQ2LDcgQEAgdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpkaWRQYXVzZShKU0M6OkV4ZWNTdGF0ZSogc2NyaXB0U3RhdGUsIGNvbnN0
IERlcHJlY2EKICAgICAgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5yZW1vdmVCcmVha3BvaW50KG1f
Y29udGludWVUb0xvY2F0aW9uQnJlYWtwb2ludElEKTsKICAgICAgICAgbV9jb250aW51ZVRvTG9j
YXRpb25CcmVha3BvaW50SUQgPSBKU0M6Om5vQnJlYWtwb2ludElEOwogICAgIH0KKwogICAgIGlm
IChtX2xpc3RlbmVyKQogICAgICAgICBtX2xpc3RlbmVyLT5kaWRQYXVzZSgpOwogfQpAQCAtNjk1
LDcgKzY3MCw2IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZGlkU2FtcGxlUHJvYmUo
SlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlLCBpbnQgcHJvCiB2b2lkIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25Tb3VuZCgpCiB7CiAgICAgLy8gRklYTUU6IFdlIHNo
b3VsZCBzZW5kIGEgbWVzc2FnZSB0byB0aGUgZnJvbnRlbmQgdG8gbWFrZSB0aGUgZnJvbnRlbmQg
YmVlcC4KLSAgICBzeXN0ZW1CZWVwKCk7CiB9CiAKIHZvaWQgSW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6ZGlkQ29udGludWUoKQpAQCAtNzAzLDYgKzY3Nyw3IEBAIHZvaWQgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6ZGlkQ29udGludWUoKQogICAgIG1fcGF1c2VkU2NyaXB0U3RhdGUgPSBudWxscHRy
OwogICAgIG1fY3VycmVudENhbGxTdGFjayA9IERlcHJlY2F0ZWQ6OlNjcmlwdFZhbHVlKCk7CiAg
ICAgY2xlYXJCcmVha0RldGFpbHMoKTsKKwogICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5yZXN1
bWVkKCk7CiB9CiAKQEAgLTczNiw5ICs3MTEsMTAgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpjbGVhclJlc29sdmVkQnJlYWtwb2ludFN0YXRlKCkKIGJvb2wgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6YXNzZXJ0UGF1c2VkKEVycm9yU3RyaW5nKiBlcnJvclN0cmluZykKIHsKICAgICBp
ZiAoIW1fcGF1c2VkU2NyaXB0U3RhdGUpIHsKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIkNhbiBv
bmx5IHBlcmZvcm0gb3BlcmF0aW9uIHdoaWxlIHBhdXNlZC4iOworICAgICAgICAqZXJyb3JTdHJp
bmcgPSBBU0NJSUxpdGVyYWwoIkNhbiBvbmx5IHBlcmZvcm0gb3BlcmF0aW9uIHdoaWxlIHBhdXNl
ZC4iKTsKICAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIH0KKwogICAgIHJldHVybiB0cnVlOwog
fQogCkBAIC03NTYsNiArNzMyLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaWRD
bGVhckdsb2JhbE9iamVjdCgpCiAgICAgY2xlYXJSZXNvbHZlZEJyZWFrcG9pbnRTdGF0ZSgpOwog
fQogCi19IC8vIG5hbWVzcGFjZSBXZWJDb3JlCit9IC8vIG5hbWVzcGFjZSBJbnNwZWN0b3IKIAot
I2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9S
KQorI2VuZGlmIC8vIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorI2VuZGlmIC8vIEVOQUJM
RShJTlNQRUNUT1IpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2Vu
dHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCnNpbWlsYXJpdHkgaW5kZXggNjclCnJlbmFtZSBm
cm9tIFNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKcmVu
YW1lIHRvIFNvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuaAppbmRleCA4ZmU2MTM2Li5hYjVlMTk3IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApA
QCAtMzAsNjIgKzMwLDUyIEBACiAjaWZuZGVmIEluc3BlY3RvckRlYnVnZ2VyQWdlbnRfaAogI2Rl
ZmluZSBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50X2gKIAotI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RF
QlVHR0VSKSAmJiBFTkFCTEUoSU5TUEVDVE9SKQorI2lmIEVOQUJMRShJTlNQRUNUT1IpCisjaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCiAKLSNpbmNsdWRlICJDb25zb2xlQVBJVHlwZXMu
aCIKLSNpbmNsdWRlICJDb25zb2xlVHlwZXMuaCIKLSNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2Vu
dEJhc2UuaCIKLSNpbmNsdWRlIDxiaW5kaW5ncy9TY3JpcHRWYWx1ZS5oPgotI2luY2x1ZGUgPGRl
YnVnZ2VyL0RlYnVnZ2VyLmg+Ci0jaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckpTQmFja2Vu
ZERpc3BhdGNoZXJzLmg+Ci0jaW5jbHVkZSA8aW5zcGVjdG9yL0luc3BlY3RvckpTRnJvbnRlbmRE
aXNwYXRjaGVycy5oPgotI2luY2x1ZGUgPGluc3BlY3Rvci9TY3JpcHRCcmVha3BvaW50Lmg+Ci0j
aW5jbHVkZSA8aW5zcGVjdG9yL1NjcmlwdERlYnVnTGlzdGVuZXIuaD4KKyNpbmNsdWRlICJJbnNw
ZWN0b3JKU0JhY2tlbmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUgIkluc3BlY3RvckpTRnJvbnRl
bmREaXNwYXRjaGVycy5oIgorI2luY2x1ZGUgImJpbmRpbmdzL1NjcmlwdFZhbHVlLmgiCisjaW5j
bHVkZSAiZGVidWdnZXIvRGVidWdnZXIuaCIKKyNpbmNsdWRlICJpbnNwZWN0b3IvSW5zcGVjdG9y
QWdlbnRCYXNlLmgiCisjaW5jbHVkZSAiaW5zcGVjdG9yL1NjcmlwdEJyZWFrcG9pbnQuaCIKKyNp
bmNsdWRlICJpbnNwZWN0b3IvU2NyaXB0RGVidWdMaXN0ZW5lci5oIgogI2luY2x1ZGUgPHd0Zi9G
b3J3YXJkLmg+CiAjaW5jbHVkZSA8d3RmL0hhc2hNYXAuaD4KKyNpbmNsdWRlIDx3dGYvTm9uY29w
eWFibGUuaD4KICNpbmNsdWRlIDx3dGYvUGFzc093blB0ci5oPgogI2luY2x1ZGUgPHd0Zi9QYXNz
UmVmUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1ZlY3Rvci5oPgogI2luY2x1ZGUgPHd0Zi90ZXh0L1N0
cmluZ0hhc2guaD4KIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CisKIGNsYXNzIEluamVjdGVkU2Ny
aXB0OwogY2xhc3MgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyOwogY2xhc3MgSW5zcGVjdG9yQXJyYXk7
CiBjbGFzcyBJbnNwZWN0b3JPYmplY3Q7CiBjbGFzcyBJbnNwZWN0b3JWYWx1ZTsKIGNsYXNzIFNj
cmlwdERlYnVnU2VydmVyOwotfQotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNsYXNzIEluc3Ry
dW1lbnRpbmdBZ2VudHM7Ci0KIHR5cGVkZWYgU3RyaW5nIEVycm9yU3RyaW5nOwogCi1jbGFzcyBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50IDogcHVibGljIEluc3BlY3RvckFnZW50QmFzZSwgcHVibGlj
IEluc3BlY3Rvcjo6U2NyaXB0RGVidWdMaXN0ZW5lciwgcHVibGljIEluc3BlY3Rvcjo6SW5zcGVj
dG9yRGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewotICAgIFdURl9NQUtFX05PTkNP
UFlBQkxFKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQpOyBXVEZfTUFLRV9GQVNUX0FMTE9DQVRFRDsK
K2NsYXNzIEpTX0VYUE9SVF9QUklWQVRFIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgOiBwdWJsaWMg
SW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgU2NyaXB0RGVidWdMaXN0ZW5lciwgcHVibGljIElu
c3BlY3RvckRlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKKyAgICBXVEZfTUFLRV9O
T05DT1BZQUJMRShJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KTsKKyAgICBXVEZfTUFLRV9GQVNUX0FM
TE9DQVRFRDsKIHB1YmxpYzoKICAgICBzdGF0aWMgY29uc3QgY2hhciogYmFja3RyYWNlT2JqZWN0
R3JvdXA7CiAKICAgICB2aXJ0dWFsIH5JbnNwZWN0b3JEZWJ1Z2dlckFnZW50KCk7CiAKLSAgICB2
aXJ0dWFsIHZvaWQgZGlkQ3JlYXRlRnJvbnRlbmRBbmRCYWNrZW5kKEluc3BlY3Rvcjo6SW5zcGVj
dG9yRnJvbnRlbmRDaGFubmVsKiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JCYWNrZW5kRGlzcGF0Y2hl
ciopIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCB3aWxsRGVzdHJveUZyb250ZW5kQW5kQmFj
a2VuZChJbnNwZWN0b3I6Okluc3BlY3RvckRpc2Nvbm5lY3RSZWFzb24pIG92ZXJyaWRlOworICAg
IHZpcnR1YWwgdm9pZCBkaWRDcmVhdGVGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsKiwgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXIqKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgd2lsbERlc3Ryb3lGcm9udGVuZEFuZEJhY2tlbmQoSW5zcGVjdG9yRGlzY29u
bmVjdFJlYXNvbikgb3ZlcnJpZGU7CiAKLSAgICBib29sIGlzUGF1c2VkKCk7Ci0gICAgdm9pZCBh
ZGRNZXNzYWdlVG9Db25zb2xlKE1lc3NhZ2VTb3VyY2UsIE1lc3NhZ2VUeXBlKTsKLQotICAgIC8v
IFBhcnQgb2YgdGhlIHByb3RvY29sLgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJyb3JTdHJp
bmcqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyopIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50c0FjdGl2ZShFcnJvclN0cmlu
ZyosIGJvb2wgYWN0aXZlKSBvdmVycmlkZTsKLQogICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3Bv
aW50QnlVcmwoRXJyb3JTdHJpbmcqLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nKiBvcHRp
b25hbFVSTCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBpbnQqIG9wdGlv
bmFsQ29sdW1uTnVtYmVyLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
KiBvcHRpb25zLCBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElk
KiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6OkFycmF5PEluc3BlY3Rvcjo6VHlwZUJ1
aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMsIFJlZlB0cjxJbnNwZWN0b3I6
OlR5cGVCdWlsZGVyOjpBcnJheTxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJl
YWtwb2ludEFjdGlvbklkZW50aWZpZXI+PiYgYnJlYWtwb2ludEFjdGlvbklkZW50aWZpZXJzKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtwb2ludChFcnJvclN0cmluZyosIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mIGxvY2F0aW9uLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvcHRpb25zLCBJbnNwZWN0b3I6OlR5
cGVCdWlsZGVyOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPEluc3BlY3Rvcjo6VHlw
ZUJ1aWxkZXI6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExvY2F0aW9uLCBSZWZQdHI8SW5z
cGVjdG9yOjpUeXBlQnVpbGRlcjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdn
ZXI6OkJyZWFrcG9pbnRBY3Rpb25JZGVudGlmaWVyPj4mIGJyZWFrcG9pbnRBY3Rpb25JZGVudGlm
aWVycykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUJyZWFrcG9pbnQoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyKSBvdmVycmlkZTsKLSAg
ICB2aXJ0dWFsIHZvaWQgY29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5nKiwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYgbG9jYXRpb24pIG92ZXJyaWRlOwotCisg
ICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyosIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiBsb2NhdGlvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHNlYXJjaEluQ29udGVudChFcnJvclN0cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQs
IGNvbnN0IFN0cmluZyYgcXVlcnksIGNvbnN0IGJvb2wqIG9wdGlvbmFsQ2FzZVNlbnNpdGl2ZSwg
Y29uc3QgYm9vbCogb3B0aW9uYWxJc1JlZ2V4LCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6QXJyYXk8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6R2VuZXJpY1R5cGVzOjpTZWFyY2hNYXRj
aD4+Jikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGdldFNjcmlwdFNvdXJjZShFcnJvclN0
cmluZyosIGNvbnN0IFN0cmluZyYgc2NyaXB0SUQsIFN0cmluZyogc2NyaXB0U291cmNlKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0RnVuY3Rpb25EZXRhaWxzKEVycm9yU3RyaW5nKiwg
Y29uc3QgU3RyaW5nJiBmdW5jdGlvbklkLCBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6
RGVidWdnZXI6OkZ1bmN0aW9uRGV0YWlscz4mKSBvdmVycmlkZTsKQEAgLTk1LDIxICs4NSwxNiBA
QCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIHN0ZXBJbnRvKEVycm9yU3RyaW5nKikgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIHN0ZXBPdXQoRXJyb3JTdHJpbmcqKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2V0UGF1c2VPbkV4Y2VwdGlvbnMoRXJyb3JTdHJpbmcqLCBjb25zdCBT
dHJpbmcmIHBhdXNlU3RhdGUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBldmFsdWF0ZU9u
Q2FsbEZyYW1lKEVycm9yU3RyaW5nKiwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiBjYWxsRnJhbWVJZCwKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICAgY29u
c3QgU3RyaW5nJiBleHByZXNzaW9uLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBTdHJpbmcqIG9iamVjdEdyb3VwLAotICAgICAgICAgICAgICAgICAgICAgICAgICAgICBjb25z
dCBib29sKiBpbmNsdWRlQ29tbWFuZExpbmVBUEksCi0gICAgICAgICAgICAgICAgICAgICAgICAg
ICAgIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwKLSAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LAot
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRl
cjo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LAotICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICBJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93
bikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIGV2YWx1YXRlT25DYWxsRnJhbWUoRXJyb3JT
dHJpbmcqLCBjb25zdCBTdHJpbmcmIGNhbGxGcmFtZUlkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24sIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGJvb2wqIGluY2x1ZGVDb21tYW5k
TGluZUFQSSwgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xl
LCBjb25zdCBib29sKiByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcs
IFJlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiBy
ZXN1bHQsIEluc3BlY3Rvcjo6VHlwZUJ1aWxkZXI6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3du
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0T3ZlcmxheU1lc3NhZ2UoRXJyb3JTdHJp
bmcqLCBjb25zdCBTdHJpbmcqKSBvdmVycmlkZTsKIAotICAgIHZvaWQgc2NoZWR1bGVQYXVzZU9u
TmV4dFN0YXRlbWVudChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRj
aGVyOjpSZWFzb246OkVudW0gYnJlYWtSZWFzb24sIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IGRhdGEpOworICAgIGJvb2wgaXNQYXVzZWQoKTsKKyAgICAKKyAgICB2b2lk
IGhhbmRsZUNvbnNvbGVBc3NlcnQoKTsKKworICAgIHZvaWQgc2NoZWR1bGVQYXVzZU9uTmV4dFN0
YXRlbWVudChJbnNwZWN0b3JEZWJ1Z2dlckZyb250ZW5kRGlzcGF0Y2hlcjo6UmVhc29uOjpFbnVt
IGJyZWFrUmVhc29uLCBQYXNzUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gZGF0YSk7CiAgICAgdm9p
ZCBjYW5jZWxQYXVzZU9uTmV4dFN0YXRlbWVudCgpOwotICAgIHZvaWQgYnJlYWtQcm9ncmFtKElu
c3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI6OlJlYXNvbjo6RW51
bSBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gZGF0
YSk7CisgICAgdm9pZCBicmVha1Byb2dyYW0oSW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3Bh
dGNoZXI6OlJlYXNvbjo6RW51bSBicmVha1JlYXNvbiwgUGFzc1JlZlB0cjxJbnNwZWN0b3JPYmpl
Y3Q+IGRhdGEpOwogICAgIHZvaWQgc2NyaXB0RXhlY3V0aW9uQmxvY2tlZEJ5Q1NQKGNvbnN0IFN0
cmluZyYgZGlyZWN0aXZlVGV4dCk7CiAKICAgICBjbGFzcyBMaXN0ZW5lciB7CkBAIC0xMjIsMjIg
KzEwNywyNiBAQCBwdWJsaWM6CiAgICAgfTsKICAgICB2b2lkIHNldExpc3RlbmVyKExpc3RlbmVy
KiBsaXN0ZW5lcikgeyBtX2xpc3RlbmVyID0gbGlzdGVuZXI7IH0KIAotICAgIHZpcnR1YWwgSW5z
cGVjdG9yOjpTY3JpcHREZWJ1Z1NlcnZlciYgc2NyaXB0RGVidWdTZXJ2ZXIoKSA9IDA7CisgICAg
dmlydHVhbCBTY3JpcHREZWJ1Z1NlcnZlciYgc2NyaXB0RGVidWdTZXJ2ZXIoKSA9IDA7CiAKIHBy
b3RlY3RlZDoKLSAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KEluc3RydW1lbnRpbmdBZ2VudHMq
LCBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciopOworICAgIEluc3BlY3RvckRlYnVn
Z2VyQWdlbnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKik7CisKKyAgICBJbmplY3RlZFNjcmlwdE1h
bmFnZXIqIGluamVjdGVkU2NyaXB0TWFuYWdlcigpIGNvbnN0IHsgcmV0dXJuIG1faW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyOyB9CisgICAgdmlydHVhbCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlw
dEZvckV2YWwoRXJyb3JTdHJpbmcqLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkgPSAw
OwogCiAgICAgdmlydHVhbCB2b2lkIHN0YXJ0TGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIoKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIHN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcihib29s
IGlzQmVpbmdEZXN0cm95ZWQpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgc3RvcExpc3RlbmluZ1Nj
cmlwdERlYnVnU2VydmVyKGJvb2wgc2tpcFJlY29tcGlsZSkgPSAwOwogICAgIHZpcnR1YWwgdm9p
ZCBtdXRlQ29uc29sZSgpID0gMDsKICAgICB2aXJ0dWFsIHZvaWQgdW5tdXRlQ29uc29sZSgpID0g
MDsKLSAgICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRN
YW5hZ2VyKCkgY29uc3QgeyByZXR1cm4gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7IH0KLSAgICB2
aXJ0dWFsIEluc3BlY3Rvcjo6SW5qZWN0ZWRTY3JpcHQgaW5qZWN0ZWRTY3JpcHRGb3JFdmFsKEVy
cm9yU3RyaW5nKiwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQpID0gMDsKIAogICAgIHZp
cnR1YWwgdm9pZCBlbmFibGUoKTsKLSAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShib29sIGlzQmVp
bmdEZXN0cm95ZWQpOworICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKGJvb2wgc2tpcFJlY29tcGls
ZSk7CiAgICAgdmlydHVhbCB2b2lkIGRpZFBhdXNlKEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgRGVw
cmVjYXRlZDo6U2NyaXB0VmFsdWUmIGNhbGxGcmFtZXMsIGNvbnN0IERlcHJlY2F0ZWQ6OlNjcmlw
dFZhbHVlJiBleGNlcHRpb24pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaWRDb250aW51
ZSgpIG92ZXJyaWRlOworCisgICAgdmlydHVhbCBTdHJpbmcgc291cmNlTWFwVVJMRm9yU2NyaXB0
KGNvbnN0IFNjcmlwdCYpOworCiAgICAgdm9pZCBkaWRDbGVhckdsb2JhbE9iamVjdCgpOwogCiBw
cml2YXRlOgpAQCAtMTQ2LDQxICsxMzUsNDEgQEAgcHJpdmF0ZToKICAgICB2aXJ0dWFsIHZvaWQg
ZGlkUGFyc2VTb3VyY2UoSlNDOjpTb3VyY2VJRCwgY29uc3QgU2NyaXB0Jikgb3ZlcnJpZGUgZmlu
YWw7CiAgICAgdmlydHVhbCB2b2lkIGZhaWxlZFRvUGFyc2VTb3VyY2UoY29uc3QgU3RyaW5nJiB1
cmwsIGNvbnN0IFN0cmluZyYgZGF0YSwgaW50IGZpcnN0TGluZSwgaW50IGVycm9yTGluZSwgY29u
c3QgU3RyaW5nJiBlcnJvck1lc3NhZ2UpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9p
ZCBkaWRTYW1wbGVQcm9iZShKU0M6OkV4ZWNTdGF0ZSosIGludCBwcm9iZUlkZW50aWZpZXIsIGlu
dCBoaXRDb3VudCwgY29uc3QgRGVwcmVjYXRlZDo6U2NyaXB0VmFsdWUmIHNhbXBsZSkgb3ZlcnJp
ZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIGJyZWFrcG9pbnRBY3Rpb25Tb3VuZCgpIG92ZXJy
aWRlIGZpbmFsOwogCi0gICAgUGFzc1JlZlB0cjxJbnNwZWN0b3I6OlR5cGVCdWlsZGVyOjpEZWJ1
Z2dlcjo6TG9jYXRpb24+IHJlc29sdmVCcmVha3BvaW50KGNvbnN0IFN0cmluZyYgYnJlYWtwb2lu
dElkZW50aWZpZXIsIEpTQzo6U291cmNlSUQsIGNvbnN0IEluc3BlY3Rvcjo6U2NyaXB0QnJlYWtw
b2ludCYpOworICAgIHZpcnR1YWwgdm9pZCBicmVha3BvaW50QWN0aW9uU291bmQoKSBvdmVycmlk
ZTsKKworICAgIFBhc3NSZWZQdHI8SW5zcGVjdG9yOjpUeXBlQnVpbGRlcjo6RGVidWdnZXI6Okxv
Y2F0aW9uPiByZXNvbHZlQnJlYWtwb2ludChjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlm
aWVyLCBKU0M6OlNvdXJjZUlELCBjb25zdCBTY3JpcHRCcmVha3BvaW50Jik7CiAgICAgYm9vbCBh
c3NlcnRQYXVzZWQoRXJyb3JTdHJpbmcqKTsKICAgICB2b2lkIGNsZWFyUmVzb2x2ZWRCcmVha3Bv
aW50U3RhdGUoKTsKICAgICB2b2lkIGNsZWFyQnJlYWtEZXRhaWxzKCk7CiAKLSAgICBib29sIGJy
ZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKEVycm9yU3RyaW5nKiwgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yQXJyYXk+JiBhY3Rpb25zLCBWZWN0b3I8SW5zcGVjdG9yOjpTY3JpcHRCcmVh
a3BvaW50QWN0aW9uPiogcmVzdWx0KTsKLQotICAgIFN0cmluZyBzb3VyY2VNYXBVUkxGb3JTY3Jp
cHQoY29uc3QgU2NyaXB0Jik7CisgICAgYm9vbCBicmVha3BvaW50QWN0aW9uc0Zyb21Qcm90b2Nv
bChFcnJvclN0cmluZyosIFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIGFjdGlvbnMsIFZlY3RvcjxT
Y3JpcHRCcmVha3BvaW50QWN0aW9uPiogcmVzdWx0KTsKIAogICAgIHR5cGVkZWYgSGFzaE1hcDxK
U0M6OlNvdXJjZUlELCBTY3JpcHQ+IFNjcmlwdHNNYXA7CiAgICAgdHlwZWRlZiBIYXNoTWFwPFN0
cmluZywgVmVjdG9yPEpTQzo6QnJlYWtwb2ludElEPj4gQnJlYWtwb2ludElkZW50aWZpZXJUb0Rl
YnVnU2VydmVyQnJlYWtwb2ludElEc01hcDsKLSAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+PiBCcmVha3BvaW50SWRlbnRpZmllclRv
QnJlYWtwb2ludE1hcDsKKyAgICB0eXBlZGVmIEhhc2hNYXA8U3RyaW5nLCBSZWZQdHI8SW5zcGVj
dG9yT2JqZWN0Pj4gQnJlYWtwb2ludElkZW50aWZpZXJUb0JyZWFrcG9pbnRNYXA7CiAKLSAgICBJ
bnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7
Ci0gICAgc3RkOjp1bmlxdWVfcHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJGcm9udGVu
ZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRjaGVyOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3RvckRlYnVnZ2VyQmFja2VuZERpc3BhdGNoZXI+IG1fYmFja2VuZERpc3BhdGNoZXI7
CisgICAgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBtX2luamVjdGVkU2NyaXB0TWFuYWdlcjsKKyAg
ICBzdGQ6OnVuaXF1ZV9wdHI8SW5zcGVjdG9yRGVidWdnZXJGcm9udGVuZERpc3BhdGNoZXI+IG1f
ZnJvbnRlbmREaXNwYXRjaGVyOworICAgIFJlZlB0cjxJbnNwZWN0b3JEZWJ1Z2dlckJhY2tlbmRE
aXNwYXRjaGVyPiBtX2JhY2tlbmREaXNwYXRjaGVyOworICAgIExpc3RlbmVyKiBtX2xpc3RlbmVy
OwogICAgIEpTQzo6RXhlY1N0YXRlKiBtX3BhdXNlZFNjcmlwdFN0YXRlOwogICAgIERlcHJlY2F0
ZWQ6OlNjcmlwdFZhbHVlIG1fY3VycmVudENhbGxTdGFjazsKICAgICBTY3JpcHRzTWFwIG1fc2Ny
aXB0czsKICAgICBCcmVha3BvaW50SWRlbnRpZmllclRvRGVidWdTZXJ2ZXJCcmVha3BvaW50SURz
TWFwIG1fYnJlYWtwb2ludElkZW50aWZpZXJUb0RlYnVnU2VydmVyQnJlYWtwb2ludElEczsKICAg
ICBCcmVha3BvaW50SWRlbnRpZmllclRvQnJlYWtwb2ludE1hcCBtX2phdmFTY3JpcHRCcmVha3Bv
aW50czsKICAgICBKU0M6OkJyZWFrcG9pbnRJRCBtX2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9p
bnRJRDsKLSAgICBJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyRnJvbnRlbmREaXNwYXRjaGVy
OjpSZWFzb246OkVudW0gbV9icmVha1JlYXNvbjsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+IG1fYnJlYWtBdXhEYXRhOworICAgIEluc3BlY3RvckRlYnVnZ2VyRnJvbnRl
bmREaXNwYXRjaGVyOjpSZWFzb246OkVudW0gbV9icmVha1JlYXNvbjsKKyAgICBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiBtX2JyZWFrQXV4RGF0YTsKICAgICBib29sIG1fZW5hYmxlZDsKICAgICBi
b29sIG1famF2YVNjcmlwdFBhdXNlU2NoZWR1bGVkOwotICAgIExpc3RlbmVyKiBtX2xpc3RlbmVy
OwogICAgIGludCBtX25leHRQcm9iZVNhbXBsZUlkOwogICAgIGludCBtX25leHRCcmVha3BvaW50
QWN0aW9uSWRlbnRpZmllcjsKIH07CiAKLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKK30gLy8gbmFt
ZXNwYWNlIEluc3BlY3RvcgogCi0jZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIp
ICYmIEVOQUJMRShJTlNQRUNUT1IpCisjZW5kaWYgLy8gRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdH
RVIpCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKIAogI2VuZGlmIC8vICFkZWZpbmVkKElu
c3BlY3RvckRlYnVnZ2VyQWdlbnRfaCkKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5jcHAgYi9Tb3Vy
Y2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9KU0dsb2JhbE9iamVjdERlYnVnZ2Vy
QWdlbnQuY3BwCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLmQ0YzMyZDcKLS0t
IC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9K
U0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQuY3BwCkBAIC0wLDAgKzEsNjcgQEAKKy8qCisgKiBD
b3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAq
IFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGgg
b3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQg
dGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRp
b25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAg
IG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xh
aW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVj
ZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRp
b25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0
aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9u
LgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElT
JycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywg
QlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFO
VEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElT
Q0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9S
UyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFM
LAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVU
IE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBT
RVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJ
TlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFC
SUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAq
IChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBP
VVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRI
RSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaW5jbHVkZSAiY29uZmlnLmgi
CisjaW5jbHVkZSAiSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50LmgiCisKKyNpZiBFTkFCTEUo
SU5TUEVDVE9SKQorCisjaW5jbHVkZSAiSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLmgiCisjaW5jbHVk
ZSAiSlNHbG9iYWxPYmplY3QuaCIKKwordXNpbmcgbmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNl
IEluc3BlY3RvciB7CisKK0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudDo6SlNHbG9iYWxPYmpl
Y3REZWJ1Z2dlckFnZW50KEluamVjdGVkU2NyaXB0TWFuYWdlciogaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyLCBKU0M6OkpTR2xvYmFsT2JqZWN0JiBnbG9iYWxPYmplY3QpCisgICAgOiBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50KGluamVjdGVkU2NyaXB0TWFuYWdlcikKKyAgICAsIG1fc2NyaXB0RGVidWdT
ZXJ2ZXIoZ2xvYmFsT2JqZWN0KQoreworfQorCit2b2lkIEpTR2xvYmFsT2JqZWN0RGVidWdnZXJB
Z2VudDo6c3RhcnRMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcigpCit7CisgICAgc2NyaXB0RGVi
dWdTZXJ2ZXIoKS5hZGRMaXN0ZW5lcih0aGlzKTsKK30KKwordm9pZCBKU0dsb2JhbE9iamVjdERl
YnVnZ2VyQWdlbnQ6OnN0b3BMaXN0ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcihib29sIGlzQmVpbmdE
ZXN0cm95ZWQpCit7CisgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5yZW1vdmVMaXN0ZW5lcih0aGlz
LCBpc0JlaW5nRGVzdHJveWVkKTsKK30KKworSW5qZWN0ZWRTY3JpcHQgSlNHbG9iYWxPYmplY3RE
ZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwoRXJyb3JTdHJpbmcqIGVycm9yLCBj
b25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkKK3sKKyAgICBpZiAoZXhlY3V0aW9uQ29udGV4
dElkKSB7CisgICAgICAgICplcnJvciA9IEFTQ0lJTGl0ZXJhbCgiRXhlY3V0aW9uIGNvbnRleHQg
aWQgaXMgbm90IHN1cHBvcnRlZCBmb3IgSlNDb250ZXh0IGluc3BlY3Rpb24gYXMgdGhlcmUgaXMg
b25seSBvbmUgZXhlY3V0aW9uIGNvbnRleHQuIik7CisgICAgICAgIHJldHVybiBJbmplY3RlZFNj
cmlwdCgpOworICAgIH0KKworICAgIEV4ZWNTdGF0ZSogZXhlYyA9IG1fc2NyaXB0RGVidWdTZXJ2
ZXIuZ2xvYmFsT2JqZWN0KCkuZ2xvYmFsRXhlYygpOworICAgIHJldHVybiBpbmplY3RlZFNjcmlw
dE1hbmFnZXIoKS0+aW5qZWN0ZWRTY3JpcHRGb3IoZXhlYyk7Cit9CisKK30gLy8gbmFtZXNwYWNl
IEluc3BlY3RvcgorCisjZW5kaWYgLy8gRU5BQkxFKElOU1BFQ1RPUikKZGlmZiAtLWdpdCBhL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdn
ZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSlNHbG9i
YWxPYmplY3REZWJ1Z2dlckFnZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2NDQKaW5kZXggMDAwMDAw
MC4uYTlmZDY3OQotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3IvYWdlbnRzL0pTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudC5oCkBAIC0wLDAgKzEsNjQg
QEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMTQgQXBwbGUgSW5jLiBBbGwgcmlnaHRzIHJlc2Vy
dmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkg
Zm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVybWl0dGVkIHBy
b3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0OgorICogMS4g
UmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBhYm92ZSBjb3B5
cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xs
b3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5hcnkgZm9ybSBt
dXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlz
dCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4gdGhlCisgKiAg
ICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQgd2l0aCB0aGUg
ZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQgQlkgQVBQTEUg
SU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMs
IElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAqIElNUExJRUQgV0FSUkFOVElF
UyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEgUEFSVElDVUxBUgorICogUFVS
UE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxMIEFQUExFIElOQy4gT1IKKyAq
IENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElORElSRUNULCBJTkNJREVO
VEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5USUFMIERBTUFHRVMgKElO
Q0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VSRU1FTlQgT0YgU1VCU1RJVFVU
RSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9SCisgKiBQUk9GSVRTOyBP
UiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFORCBPTiBBTlkgVEhFT1JZ
CisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNUUklDVCBMSUFCSUxJVFks
IE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhFUldJU0UpIEFSSVNJTkcg
SU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBTT0ZUV0FSRSwgRVZFTiBJRiBB
RFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4KKyAqLworCisjaWZuZGVm
IEpTR2xvYmFsT2JqZWN0RGVidWdnZXJBZ2VudF9oCisjZGVmaW5lIEpTR2xvYmFsT2JqZWN0RGVi
dWdnZXJBZ2VudF9oCisKKyNpZiBFTkFCTEUoSU5TUEVDVE9SKQorCisjaW5jbHVkZSAiSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5oIgorI2luY2x1ZGUgIkpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdT
ZXJ2ZXIuaCIKKworbmFtZXNwYWNlIEluc3BlY3RvciB7CisKK2NsYXNzIEpTR2xvYmFsT2JqZWN0
RGVidWdnZXJBZ2VudCBmaW5hbCA6IHB1YmxpYyBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50IHsKKyAg
ICBXVEZfTUFLRV9OT05DT1BZQUJMRShKU0dsb2JhbE9iamVjdERlYnVnZ2VyQWdlbnQpOworICAg
IFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIEpTR2xvYmFsT2JqZWN0RGVi
dWdnZXJBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBKU0M6OkpTR2xvYmFsT2JqZWN0Jik7
CisgICAgdmlydHVhbCB+SlNHbG9iYWxPYmplY3REZWJ1Z2dlckFnZW50KCkgeyB9CisKKyAgICB2
aXJ0dWFsIEpTR2xvYmFsT2JqZWN0U2NyaXB0RGVidWdTZXJ2ZXImIHNjcmlwdERlYnVnU2VydmVy
KCkgb3ZlcnJpZGUgeyByZXR1cm4gbV9zY3JpcHREZWJ1Z1NlcnZlcjsgfQorCisgICAgdmlydHVh
bCB2b2lkIHN0YXJ0TGlzdGVuaW5nU2NyaXB0RGVidWdTZXJ2ZXIoKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgc3RvcExpc3RlbmluZ1NjcmlwdERlYnVnU2VydmVyKGJvb2wgaXNCZWluZ0Rl
c3Ryb3llZCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNj
cmlwdEZvckV2YWwoRXJyb3JTdHJpbmcqLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCkg
b3ZlcnJpZGU7CisKKyAgICAvLyBGSVhNRTogVGhpcyBuZWVkcyBhIENvbnNvbGVBZ2VudCB0byBz
ZW5kIGEgbG9nIHRvLgorICAgIHZpcnR1YWwgdm9pZCBicmVha3BvaW50QWN0aW9uTG9nKEpTQzo6
RXhlY1N0YXRlKiwgY29uc3QgU3RyaW5nJikgb3ZlcnJpZGUgZmluYWwgeyB9CisKKyAgICAvLyBG
SVhNRTogSmF2YVNjcmlwdCBpbnNwZWN0b3IgZG9lcyBub3QgeWV0IGhhdmUgYSBjb25zb2xlIG9i
amVjdCB0byBtdXRlLgorICAgIHZpcnR1YWwgdm9pZCBtdXRlQ29uc29sZSgpIG92ZXJyaWRlIHsg
fQorICAgIHZpcnR1YWwgdm9pZCB1bm11dGVDb25zb2xlKCkgb3ZlcnJpZGUgeyB9CisKK3ByaXZh
dGU6CisgICAgSlNHbG9iYWxPYmplY3RTY3JpcHREZWJ1Z1NlcnZlciBtX3NjcmlwdERlYnVnU2Vy
dmVyOworfTsKKworfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCisKKyNlbmRpZiAvLyBFTkFCTEUo
SU5TUEVDVE9SKQorCisjZW5kaWYgLy8gIWRlZmluZWQoSlNHbG9iYWxPYmplY3REZWJ1Z2dlckFn
ZW50X2gpCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9DTWFrZUxpc3RzLnR4dCBiL1NvdXJj
ZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CmluZGV4IDc2NGNlMjguLjcwNTYyMzEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL0NNYWtlTGlzdHMudHh0CisrKyBiL1NvdXJjZS9XZWJDb3JlL0NN
YWtlTGlzdHMudHh0CkBAIC0xNTg3LDcgKzE1ODcsNiBAQCBzZXQoV2ViQ29yZV9TT1VSQ0VTCiAg
ICAgaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5jcHAKICAgICBpbnNwZWN0b3Iv
SW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJh
c2VSZXNvdXJjZS5jcHAKLSAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAK
ICAgICBpbnNwZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5jcHAKICAgICBpbnNw
ZWN0b3IvSW5zcGVjdG9yRnJvbnRlbmRIb3N0LmNwcAogICAgIGluc3BlY3Rvci9JbnNwZWN0b3JI
ZWFwUHJvZmlsZXJBZ2VudC5jcHAKQEAgLTE2MTgsNiArMTYxNyw3IEBAIHNldChXZWJDb3JlX1NP
VVJDRVMKICAgICBpbnNwZWN0b3IvU2NyaXB0Q2FsbEZyYW1lLmNwcAogICAgIGluc3BlY3Rvci9T
Y3JpcHRDYWxsU3RhY2suY3BwCiAgICAgaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3JkRmFjdG9yeS5j
cHAKKyAgICBpbnNwZWN0b3IvV2ViRGVidWdnZXJBZ2VudC5jcHAKICAgICBpbnNwZWN0b3IvV29y
a2VyQ29uc29sZUFnZW50LmNwcAogICAgIGluc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNw
cAogICAgIGluc3BlY3Rvci9Xb3JrZXJJbnNwZWN0b3JDb250cm9sbGVyLmNwcApkaWZmIC0tZ2l0
IGEvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmlu
ZGV4IGJiYmUzODYuLjMwYjA4NDkgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2NyBAQAorMjAxNC0w
MS0yNSAgSm9zZXBoIFBlY29yYXJvICA8cGVjb3Jhcm9AYXBwbGUuY29tPgorCisgICAgICAgIFdl
YiBJbnNwZWN0b3I6IE1vdmUgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCBpbnRvIEphdmFTY3JpcHRD
b3JlCisgICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xMjc2
MjkKKworICAgICAgICBSZXZpZXdlZCBieSBOT0JPRFkgKE9PUFMhKS4KKworICAgICAgICBUZXN0
OiBpbnNwZWN0b3ItcHJvdG9jb2wvZGVidWdnZXIvcGF1c2Utb24tYXNzZXJ0Lmh0bWwKKworICAg
ICAgICAqIENNYWtlTGlzdHMudHh0OgorICAgICAgICAqIEZvcndhcmRpbmdIZWFkZXJzL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oOiBBZGRlZC4KKyAgICAgICAgKiBH
TlVtYWtlZmlsZS5saXN0LmFtOgorICAgICAgICAqIFdlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZj
eHByb2o6CisgICAgICAgICogV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvai5maWx0ZXJz
OgorICAgICAgICAqIFdlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvajoKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwOgorICAgICAgICAtIFJlbW92ZSBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LgorICAgICAgICAtIEFkZCBXZWJEZWJ1Z2dlckFnZW50IChzaGFy
ZWQgYmV0d2VlbiBQYWdlIGFuZCBXb3JrZXIpLgorCisgICAgICAgICogaW5zcGVjdG9yL1dlYkRl
YnVnZ2VyQWdlbnQuaDogQWRkZWQuCisgICAgICAgIChXZWJDb3JlOjpXZWJEZWJ1Z2dlckFnZW50
Ojp+V2ViRGVidWdnZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL1dlYkRlYnVnZ2VyQWdl
bnQuY3BwOiBBZGRlZC4KKyAgICAgICAgKFdlYkNvcmU6OldlYkRlYnVnZ2VyQWdlbnQ6OldlYkRl
YnVnZ2VyQWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6V2ViRGVidWdnZXJBZ2VudDo6ZW5hYmxl
KToKKyAgICAgICAgKFdlYkNvcmU6OldlYkRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUpOgorICAgICAg
ICBTaGFyZWQgY29kZSBmb3IgUGFnZSBhbmQgV29ya2VyIGRlYnVnZ2VyIGFnZW50cy4KKyAgICAg
ICAgSW5zdHJ1bWVudGluZyBhZ2VudHMgaXMgYSBjb25jZXB0IGluIFdlYkNvcmUgb25seSwKKyAg
ICAgICAgYW5kIHRoZSBEZWJ1Z2dlciBhZ2VudCBpcyBvbmx5IGluIHRoZSBpbnN0cnVtZW50aW5n
CisgICAgICAgIGFnZW50cyBsaXN0IHdoZW4gaXQgaXMgZW5hYmxlZCBhbmQgcmVtb3ZlZCB3aGVu
IGRpc2FibGVkLgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3RydW1lbnRpbmdBZ2VudHM6Omluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zdHJ1bWVudGluZ0FnZW50czo6c2V0SW5zcGVj
dG9yRGVidWdnZXJBZ2VudCk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuY3BwOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFn
ZW50Lmg6CisgICAgICAgIFVwZGF0ZSBuYW1lc3BhY2UgZm9yIGRlYnVnZ2VyIGFnZW50LgorCisg
ICAgICAgICogaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHA6CisgICAgICAg
IChXZWJDb3JlOjppc0NvbnNvbGVBc3NlcnRNZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6Oklu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZUltcGwpOgorICAgICAg
ICBEZWJ1Z2dlckFnZW50IGluIEphdmFTY3JpcHRDb3JlIGRvZXMgbm90IHlldCBrbm93IGFib3V0
IGNvbnNvbGUKKyAgICAgICAgdHlwZXMuIFNvIHRlbXBvcmFyaWx5IGhhbmRsZSBpdCBoZXJlLiBX
ZSBuZWVkIHRvIGdpdmUgSmF2YVNjcmlwdENvcmUKKyAgICAgICAgc29tZSBjb25jZXB0IG9mIENv
bnNvbGUgbWVzc2FnZXMgYW5kIHR5cGVzLgorCisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VEZWJ1
Z2dlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50OjpQYWdl
RGVidWdnZXJBZ2VudCk6CisgICAgICAgIChXZWJDb3JlOjpQYWdlRGVidWdnZXJBZ2VudDo6ZW5h
YmxlKToKKyAgICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50OjpkaXNhYmxlKToKKyAg
ICAgICAgKFdlYkNvcmU6OlBhZ2VEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQp
OgorICAgICAgICAoV2ViQ29yZTo6UGFnZURlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9y
RXZhbCk6CisgICAgICAgICogaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
V29ya2VyRGVidWdnZXJBZ2VudDo6V29ya2VyRGVidWdnZXJBZ2VudCk6CisgICAgICAgIChXZWJD
b3JlOjpXb3JrZXJEZWJ1Z2dlckFnZW50OjppbmplY3RlZFNjcmlwdEZvckV2YWwpOgorICAgICAg
ICAqIGluc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgIE1vZGVybml6ZSB0
aGUgUGFnZSBhbmQgV29ya2VyIGRlYnVnZ2VyIGFnZW50cy4KKworICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JDb250cm9sbGVyLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNv
bnRyb2xsZXI6Okluc3BlY3RvckNvbnRyb2xsZXIpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNw
ZWN0b3JDb250cm9sbGVyLmg6CisgICAgICAgICogaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNv
bnRyb2xsZXIuY3BwOgorICAgICAgICAoV2ViQ29yZTo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxl
cjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcik6CisgICAgICAgIE5ldyBjb25zdHJ1Y3RvcnMg
Zm9yIHRoZSBkZWJ1Z2dlciBhZ2VudHMuCisKIDIwMTQtMDEtMjUgIEFuZGVycyBDYXJsc3NvbiAg
PGFuZGVyc2NhQGFwcGxlLmNvbT4KIAogICAgICAgICBSZW1vdmUgYW4gdW51c2VkIEZyYW1lTG9h
ZGVyQ2xpZW50IGZ1bmN0aW9uCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5n
SGVhZGVycy9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL0ZvcndhcmRpbmdIZWFkZXJzL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5oCm5ldyBmaWxlIG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjcwNzJlYmUK
LS0tIC9kZXYvbnVsbAorKysgYi9Tb3VyY2UvV2ViQ29yZS9Gb3J3YXJkaW5nSGVhZGVycy9pbnNw
ZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtMCwwICsxLDQgQEAKKyNp
Zm5kZWYgV2ViQ29yZV9GV0RfSW5zcGVjdG9yRGVidWdnZXJBZ2VudF9oCisjZGVmaW5lIFdlYkNv
cmVfRldEX0luc3BlY3RvckRlYnVnZ2VyQWdlbnRfaAorI2luY2x1ZGUgPEphdmFTY3JpcHRDb3Jl
L0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaD4KKyNlbmRpZgpkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvR05VbWFrZWZpbGUubGlzdC5hbSBiL1NvdXJjZS9XZWJDb3JlL0dOVW1ha2VmaWxlLmxp
c3QuYW0KaW5kZXggZGY2M2UxZC4uYjU4NzFmNCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
R05VbWFrZWZpbGUubGlzdC5hbQorKysgYi9Tb3VyY2UvV2ViQ29yZS9HTlVtYWtlZmlsZS5saXN0
LmFtCkBAIC0zNzg1LDggKzM3ODUsNiBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZUluc3RydW1lbnRhdGlvbi5oIFwKIAlT
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAgXAog
CVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmggXAot
CVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCBcCi0J
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCBcCiAJU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmggXAogCVNvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcCBcCkBAIC0zODU3LDYgKzM4NTUs
OCBAQCB3ZWJjb3JlX3NvdXJjZXMgKz0gXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9TY3Jp
cHRDYWxsU3RhY2suaCBcCiAJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1RpbWVsaW5lUmVjb3Jk
RmFjdG9yeS5jcHAgXAogCVNvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9UaW1lbGluZVJlY29yZEZh
Y3RvcnkuaCBcCisJU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkRlYnVnZ2VyQWdlbnQuY3Bw
IFwKKwlTb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViRGVidWdnZXJBZ2VudC5oIFwKIAlTb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyQ29uc29sZUFnZW50LmNwcCBcCiAJU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dvcmtlckNvbnNvbGVBZ2VudC5oIFwKIAlTb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAgXApkaWZmIC0tZ2l0IGEvU291cmNlL1dl
YkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dl
YkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oKaW5kZXggY2I3YmRhMC4uYWZkNjRkNDYgMTAw
NjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2oK
KysrIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9qL1dlYkNvcmUudmN4cHJvagpAQCAt
MTc2MjUsMTQgKzE3NjI1LDYgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2luMzInIj50cnVl
PC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249
IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0JyI+dHJ1ZTwv
RXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+Ci0gICAgPENsQ29tcGlsZSBJbmNs
dWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAiPgotICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgICAgPEV4Y2x1
ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0n
UmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNsdWRlZEZy
b21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1JlbGVh
c2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KLSAgICAgIDxFeGNs
dWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09
J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+Ci0gICAgICA8
RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRmb3Jt
KSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgotICAgIDwvQ2xD
b21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckRP
TUFnZW50LmNwcCI+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25m
aWd1cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRG
cm9tQnVpbGQ+CiAgICAgICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1
cmF0aW9uKXwkKFBsYXRmb3JtKSc9PSdSZWxlYXNlfHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1
aWxkPgpAQCAtMTc4OTcsNiArMTc4ODksMTQgQEAKICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258V2lu
MzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KICAgICAgIDxFeGNsdWRlZEZyb21CdWlsZCBD
b25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Byb2R1Y3Rpb258eDY0
JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CiAgICAgPC9DbENvbXBpbGU+CisgICAgPENsQ29t
cGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcV2ViRGVidWdnZXJBZ2VudC5jcHAiPgorICAgICAg
PEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9y
bSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgICAgPEV4
Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSkn
PT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxFeGNsdWRl
ZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0pJz09J1Jl
bGVhc2VfV2luQ2Fpcm98V2luMzInIj50cnVlPC9FeGNsdWRlZEZyb21CdWlsZD4KKyAgICAgIDxF
eGNsdWRlZEZyb21CdWlsZCBDb25kaXRpb249IickKENvbmZpZ3VyYXRpb24pfCQoUGxhdGZvcm0p
Jz09J1JlbGVhc2VfV2luQ2Fpcm98eDY0JyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufFdpbjMyJyI+dHJ1ZTwvRXhjbHVkZWRGcm9tQnVpbGQ+CisgICAg
ICA8RXhjbHVkZWRGcm9tQnVpbGQgQ29uZGl0aW9uPSInJChDb25maWd1cmF0aW9uKXwkKFBsYXRm
b3JtKSc9PSdQcm9kdWN0aW9ufHg2NCciPnRydWU8L0V4Y2x1ZGVkRnJvbUJ1aWxkPgorICAgIDwv
Q2xDb21waWxlPgogICAgIDxDbENvbXBpbGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXFdvcmtlckNv
bnNvbGVBZ2VudC5jcHAiPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQo
Q29uZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXxXaW4zMiciPnRydWU8L0V4Y2x1
ZGVkRnJvbUJ1aWxkPgogICAgICAgPEV4Y2x1ZGVkRnJvbUJ1aWxkIENvbmRpdGlvbj0iJyQoQ29u
ZmlndXJhdGlvbil8JChQbGF0Zm9ybSknPT0nUmVsZWFzZXx4NjQnIj50cnVlPC9FeGNsdWRlZEZy
b21CdWlsZD4KQEAgLTIwODUwLDcgKzIwODUwLDYgQEAKICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9
Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgiIC8+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRGF0YWJhc2VJbnN0cnVtZW50YXRpb24u
aCIgLz4KICAgICA8Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JEYXRh
YmFzZVJlc291cmNlLmgiIC8+Ci0gICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3Jc
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXEluc3BlY3RvckRPTUFnZW50LmgiIC8+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRE9NRGVidWdnZXJBZ2VudC5oIiAvPgogICAgIDxDbElu
Y2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oIiAv
PgpAQCAtMjA4ODgsNiArMjA4ODcsNyBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5z
cGVjdG9yXFNjcmlwdENhbGxGcmFtZS5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5c
aW5zcGVjdG9yXFNjcmlwdENhbGxTdGFjay5oIiAvPgogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0i
Li5caW5zcGVjdG9yXFRpbWVsaW5lUmVjb3JkRmFjdG9yeS5oIiAvPgorICAgIDxDbEluY2x1ZGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXFdlYkRlYnVnZ2VyQWdlbnQuaCIgLz4KICAgICA8Q2xJbmNs
dWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxXb3JrZXJDb25zb2xlQWdlbnQuaCIgLz4KICAgICA8
Q2xJbmNsdWRlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxXb3JrZXJEZWJ1Z2dlckFnZW50LmgiIC8+
CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcV29ya2VySW5zcGVjdG9yQ29u
dHJvbGxlci5oIiAvPgpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvai5maWx0ZXJzIGIvU291cmNlL1dlYkNvcmUvV2ViQ29yZS52Y3hwcm9q
L1dlYkNvcmUudmN4cHJvai5maWx0ZXJzCmluZGV4IDEzMjZiZWEuLjRiNzFhNTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUudmN4cHJvai9XZWJDb3JlLnZjeHByb2ouZmlsdGVy
cworKysgYi9Tb3VyY2UvV2ViQ29yZS9XZWJDb3JlLnZjeHByb2ovV2ViQ29yZS52Y3hwcm9qLmZp
bHRlcnMKQEAgLTQ3NjQsOSArNDc2NCw2IEBACiAgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxp
bnNwZWN0b3JcSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5jcHAiPgogICAgICAgPEZpbHRlcj5p
bnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsQ29tcGlsZT4KLSAgICA8Q2xDb21waWxlIEluY2x1
ZGU9Ii4uXGluc3BlY3RvclxJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCI+Ci0gICAgICA8Rmls
dGVyPmluc3BlY3RvcjwvRmlsdGVyPgotICAgIDwvQ2xDb21waWxlPgogICAgIDxDbENvbXBpbGUg
SW5jbHVkZT0iLi5caW5zcGVjdG9yXEluc3BlY3RvckRPTUFnZW50LmNwcCI+CiAgICAgICA8Rmls
dGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xDb21waWxlPgpAQCAtNDg2Myw2ICs0ODYw
LDkgQEAKICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxUaW1lbGluZVJlY29y
ZEZhY3RvcnkuY3BwIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9D
bENvbXBpbGU+CisgICAgPENsQ29tcGlsZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcV2ViRGVidWdn
ZXJBZ2VudC5jcHAiPgorICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KKyAgICA8L0Ns
Q29tcGlsZT4KICAgICA8Q2xDb21waWxlIEluY2x1ZGU9Ii4uXGluc3BlY3RvclxXb3JrZXJDb25z
b2xlQWdlbnQuY3BwIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9D
bENvbXBpbGU+CkBAIC0xMjI4Nyw5ICsxMjI4Nyw2IEBACiAgICAgPENsSW5jbHVkZSBJbmNsdWRl
PSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJjZS5oIj4KICAgICAgIDxGaWx0
ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9DbEluY2x1ZGU+Ci0gICAgPENsSW5jbHVkZSBJ
bmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIj4KLSAgICAgIDxG
aWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+Ci0gICAgPC9DbEluY2x1ZGU+CiAgICAgPENsSW5jbHVk
ZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcSW5zcGVjdG9yRE9NQWdlbnQuaCI+CiAgICAgICA8Rmls
dGVyPmluc3BlY3RvcjwvRmlsdGVyPgogICAgIDwvQ2xJbmNsdWRlPgpAQCAtMTI0MDEsNiArMTIz
OTgsOSBAQAogICAgIDxDbEluY2x1ZGUgSW5jbHVkZT0iLi5caW5zcGVjdG9yXFRpbWVsaW5lUmVj
b3JkRmFjdG9yeS5oIj4KICAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CiAgICAgPC9D
bEluY2x1ZGU+CisgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcV2ViRGVidWdn
ZXJBZ2VudC5oIj4KKyAgICAgIDxGaWx0ZXI+aW5zcGVjdG9yPC9GaWx0ZXI+CisgICAgPC9DbElu
Y2x1ZGU+CiAgICAgPENsSW5jbHVkZSBJbmNsdWRlPSIuLlxpbnNwZWN0b3JcV29ya2VyQ29uc29s
ZUFnZW50LmgiPgogICAgICAgPEZpbHRlcj5pbnNwZWN0b3I8L0ZpbHRlcj4KICAgICA8L0NsSW5j
bHVkZT4KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2pl
Y3QucGJ4cHJvaiBiL1NvdXJjZS9XZWJDb3JlL1dlYkNvcmUueGNvZGVwcm9qL3Byb2plY3QucGJ4
cHJvagppbmRleCA3NDI0MjIyLi4yZGQ0YzM3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9X
ZWJDb3JlLnhjb2RlcHJvai9wcm9qZWN0LnBieHByb2oKKysrIGIvU291cmNlL1dlYkNvcmUvV2Vi
Q29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qCkBAIC0zNjQ0LDYgKzM2NDQsOCBAQAogCQlB
NUM1NjZBQjEyN0EzQUFEMDBFOEEzRkYgLyogRGlza0ltYWdlQ2FjaGVDbGllbnRJT1MuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1QzU2NkFBMTI3QTNB
QUQwMEU4QTNGRiAvKiBEaXNrSW1hZ2VDYWNoZUNsaWVudElPUy5oICovOyBzZXR0aW5ncyA9IHtB
VFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUE1REVCREEzMTZGQjkwODcwMDgzNkZF
MCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1REVCRDlGMTZGQjkwODcwMDgz
NkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWlsYWJpbGl0eUV2ZW50LmNwcCAqLzsgfTsK
IAkJQTVERUJEQTQxNkZCOTA4NzAwODM2RkUwIC8qIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxh
YmlsaXR5RXZlbnQuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEE1REVCREEwMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1RhcmdldEF2YWls
YWJpbGl0eUV2ZW50LmggKi87IH07CisJCUE1RTYxNjczMTg5NDU4MUYwMDlBREY1MCAvKiBXZWJE
ZWJ1Z2dlckFnZW50LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmls
ZVJlZiA9IEE1RTYxNjcxMTg5NDU4MUYwMDlBREY1MCAvKiBXZWJEZWJ1Z2dlckFnZW50LmNwcCAq
LzsgfTsKKwkJQTVFNjE2NzQxODk0NTgxRjAwOUFERjUwIC8qIFdlYkRlYnVnZ2VyQWdlbnQuaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEE1RTYxNjcyMTg5
NDU4MUYwMDlBREY1MCAvKiBXZWJEZWJ1Z2dlckFnZW50LmggKi87IH07CiAJCUE1RjZFMTZCMTMy
RUQ0NkUwMDhFREFFMyAvKiBBdXRvY2FwaXRhbGl6ZS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2Eg
PSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBBNUY2RTE2QzEzMkVENDZFMDA4RURBRTMgLyogQXV0
b2NhcGl0YWxpemUuY3BwICovOyB9OwogCQlBNUY5RUY3MDEyNjY3NTBEMDBGQ0NGNTIgLyogRGlz
a0ltYWdlQ2FjaGVJT1MubW0gaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBBNUY5RUY2RTEyNjY3NTBEMDBGQ0NGNTIgLyogRGlza0ltYWdlQ2FjaGVJT1MubW0g
Ki87IH07CiAJCUE1RjlFRjcxMTI2Njc1MEQwMEZDQ0Y1MiAvKiBEaXNrSW1hZ2VDYWNoZUlPUy5o
IGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQTVGOUVGNkYx
MjY2NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFnZUNhY2hlSU9TLmggKi87IHNldHRpbmdzID0ge0FU
VFJJQlVURVMgPSAoUHJpdmF0ZSwgKTsgfTsgfTsKQEAgLTYwMTgsOCArNjAyMCw2IEBACiAJCUYz
MzM1QkY4MTJFMDdEQzMwMEQzMzAxMSAvKiBJbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwIGluIFNv
dXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gRjMzMzVCRjYxMkUwN0RD
MzAwRDMzMDExIC8qIEluc3BlY3RvckNvbnNvbGVBZ2VudC5jcHAgKi87IH07CiAJCUYzMzM1QkY5
MTJFMDdEQzMwMEQzMzAxMSAvKiBJbnNwZWN0b3JDb25zb2xlQWdlbnQuaCBpbiBIZWFkZXJzICov
ID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzMzM1QkY3MTJFMDdEQzMwMEQzMzAx
MSAvKiBJbnNwZWN0b3JDb25zb2xlQWdlbnQuaCAqLzsgfTsKIAkJRjMzRjAyODIxMjA5NDdGMjAw
RTU3NDNBIC8qIFNjcmlwdFByb2ZpbGUuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVp
bGRGaWxlOyBmaWxlUmVmID0gRjMzRjAyODExMjA5NDdGMjAwRTU3NDNBIC8qIFNjcmlwdFByb2Zp
bGUuY3BwICovOyB9OwotCQlGMzNGMDUzRDEyMEIwREE1MDBFNTc0M0EgLyogSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVS
ZWYgPSBGMzNGMDUzQjEyMEIwREE1MDBFNTc0M0EgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5j
cHAgKi87IH07Ci0JCUYzM0YwNTNFMTIwQjBEQTUwMEU1NzQzQSAvKiBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBG
MzNGMDUzQzEyMEIwREE1MDBFNTc0M0EgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oICovOyB9
OwogCQlGMzQ0QzcxNDExMjVCODJDMDBGMjZFRUUgLyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnQu
aCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNDRDNzEy
MTEyNUI4MkMwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudC5oICovOyBzZXR0aW5n
cyA9IHtBVFRSSUJVVEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUYzNDRDNzUzMTEyOTREOUQw
MEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmggaW4gSGVhZGVycyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBGMzQ0Qzc1MjExMjk0RDlEMDBGMjZFRUUg
LyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oICovOyBzZXR0aW5ncyA9IHtBVFRSSUJV
VEVTID0gKFByaXZhdGUsICk7IH07IH07CiAJCUYzNDRDNzU4MTEyOTRGRjYwMEYyNkVFRSAvKiBJ
bnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEYzNDRDNzU3MTEyOTRGRjYwMEYyNkVFRSAvKiBJbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCAqLzsgfTsKQEAgLTEwNjA4LDYgKzEwNjA4LDggQEAK
IAkJQTVERUJEOUYxNkZCOTA4NzAwODM2RkUwIC8qIFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxh
YmlsaXR5RXZlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gV2Vi
S2l0UGxheWJhY2tUYXJnZXRBdmFpbGFiaWxpdHlFdmVudC5jcHA7IHNvdXJjZVRyZWUgPSAiPGdy
b3VwPiI7IH07CiAJCUE1REVCREEwMTZGQjkwODcwMDgzNkZFMCAvKiBXZWJLaXRQbGF5YmFja1Rh
cmdldEF2YWlsYWJpbGl0eUV2ZW50LmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9
IFdlYktpdFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQTVERUJEQTExNkZCOTA4NzAwODM2RkUwIC8qIFdlYktpdFBsYXliYWNr
VGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IFdlYktp
dFBsYXliYWNrVGFyZ2V0QXZhaWxhYmlsaXR5RXZlbnQuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91
cD4iOyB9OworCQlBNUU2MTY3MTE4OTQ1ODFGMDA5QURGNTAgLyogV2ViRGVidWdnZXJBZ2VudC5j
cHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBXZWJEZWJ1Z2dlckFnZW50
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQTVFNjE2NzIxODk0NTgxRjAwOUFE
RjUwIC8qIFdlYkRlYnVnZ2VyQWdlbnQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gV2ViRGVidWdnZXJBZ2VudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlBNUY2
RTE2QzEzMkVENDZFMDA4RURBRTMgLyogQXV0b2NhcGl0YWxpemUuY3BwICovID0ge2lzYSA9IFBC
WEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291
cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gQXV0b2NhcGl0YWxpemUuY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlBNUY5RUY2RTEyNjY3NTBEMDBGQ0NGNTIgLyogRGlza0ltYWdlQ2Fj
aGVJT1MubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsg
bGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5vYmpjcHA7IHBhdGggPSBEaXNrSW1h
Z2VDYWNoZUlPUy5tbTsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQTVGOUVGNkYxMjY2
NzUwRDAwRkNDRjUyIC8qIERpc2tJbWFnZUNhY2hlSU9TLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2Rl
LmMuaDsgcGF0aCA9IERpc2tJbWFnZUNhY2hlSU9TLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CkBAIC0xMzMyNSw4ICsxMzMyNyw2IEBACiAJCUYzMzM1QkY2MTJFMDdEQzMwMEQzMzAxMSAv
KiBJbnNwZWN0b3JDb25zb2xlQWdlbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3Bw
OyBwYXRoID0gSW5zcGVjdG9yQ29uc29sZUFnZW50LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+
IjsgfTsKIAkJRjMzMzVCRjcxMkUwN0RDMzAwRDMzMDExIC8qIEluc3BlY3RvckNvbnNvbGVBZ2Vu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JDb25zb2xlQWdl
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJRjMzRjAyODExMjA5NDdGMjAwRTU3
NDNBIC8qIFNjcmlwdFByb2ZpbGUuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZp
bGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gU2NyaXB0UHJvZmlsZS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0JCUYz
M0YwNTNCMTIwQjBEQTUwMEU1NzQzQSAvKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmNwcCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlGMzNGMDUzQzEyMEIwREE1MDBFNTc0
M0EgLyogSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7
IHBhdGggPSBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7
IH07CiAJCUYzNDRDNzEyMTEyNUI4MkMwMEYyNkVFRSAvKiBJbnNwZWN0b3JGcm9udGVuZENsaWVu
dC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RL
bm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZENs
aWVudC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlGMzQ0Qzc1MjExMjk0RDlEMDBG
MjZFRUUgLyogSW5zcGVjdG9yRnJvbnRlbmRDbGllbnRMb2NhbC5oICovID0ge2lzYSA9IFBCWEZp
bGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNl
Y29kZS5jLmg7IHBhdGggPSBJbnNwZWN0b3JGcm9udGVuZENsaWVudExvY2FsLmg7IHNvdXJjZVRy
ZWUgPSAiPGdyb3VwPiI7IH07CiAJCUYzNDRDNzU3MTEyOTRGRjYwMEYyNkVFRSAvKiBJbnNwZWN0
b3JGcm9udGVuZENsaWVudExvY2FsLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsg
cGF0aCA9IEluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwpAQCAtMTQ4MDEsOCArMTQ4MDEsNiBAQAogCQkJCUYzRjVDRjEyMTJFRDgxQjMw
MDg0QzU2OSAvKiBJbnNwZWN0b3JEYXRhYmFzZUluc3RydW1lbnRhdGlvbi5oICovLAogCQkJCTQx
RjA2MjEzMEY1RjE5MjYwMEEwN0VBQyAvKiBJbnNwZWN0b3JEYXRhYmFzZVJlc291cmNlLmNwcCAq
LywKIAkJCQk0MUYwNjIxMjBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNv
dXJjZS5oICovLAotCQkJCUYzM0YwNTNCMTIwQjBEQTUwMEU1NzQzQSAvKiBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50LmNwcCAqLywKLQkJCQlGMzNGMDUzQzEyMEIwREE1MDBFNTc0M0EgLyogSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5oICovLAogCQkJCTdBMjQ1ODc5MTAyMUVBRjQwMDBBMDBBQSAvKiBJ
bnNwZWN0b3JET01BZ2VudC5jcHAgKi8sCiAJCQkJN0EyNDU4N0ExMDIxRUFGNDAwMEEwMEFBIC8q
IEluc3BlY3RvckRPTUFnZW50LmggKi8sCiAJCQkJRjNENEM0NzYxMkUwNzY2MzAwM0RBMTUwIC8q
IEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuY3BwICovLApAQCAtMTQ4NzksNiArMTQ4NzcsOCBA
QAogCQkJCTlGQTM3RUYwMTE3MkZENDEwMEM0Q0Q1NSAvKiBTY3JpcHRQcm9maWxlTm9kZS5pZGwg
Ki8sCiAJCQkJNzU1M0NGRTcxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3JkRmFjdG9y
eS5jcHAgKi8sCiAJCQkJNzU1M0NGRTYxMDhGNDczRjAwRUEyODFFIC8qIFRpbWVsaW5lUmVjb3Jk
RmFjdG9yeS5oICovLAorCQkJCUE1RTYxNjcxMTg5NDU4MUYwMDlBREY1MCAvKiBXZWJEZWJ1Z2dl
ckFnZW50LmNwcCAqLywKKwkJCQlBNUU2MTY3MjE4OTQ1ODFGMDA5QURGNTAgLyogV2ViRGVidWdn
ZXJBZ2VudC5oICovLAogCQkJCUYzODIwODhFMTQ3RDM1RjkwMDEwQkMwNiAvKiBXb3JrZXJDb25z
b2xlQWdlbnQuY3BwICovLAogCQkJCUYzODIwODhGMTQ3RDM1RjkwMDEwQkMwNiAvKiBXb3JrZXJD
b25zb2xlQWdlbnQuaCAqLywKIAkJCQlGMzQ3NDJERTEzNDM2MzFGMDA1MzFCQzIgLyogV29ya2Vy
RGVidWdnZXJBZ2VudC5jcHAgKi8sCkBAIC0yMzkyNiw3ICsyMzkyNiw2IEBACiAJCQkJN0FCMEIx
QzExMjExQTYyMjAwQTc2OTQwIC8qIEluc3BlY3RvckRhdGFiYXNlQWdlbnQuaCBpbiBIZWFkZXJz
ICovLAogCQkJCUYzRjVDRjEzMTJFRDgxQjMwMDg0QzU2OSAvKiBJbnNwZWN0b3JEYXRhYmFzZUlu
c3RydW1lbnRhdGlvbi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJNDFGMDYyMTQwRjVGMTkyNjAwQTA3
RUFDIC8qIEluc3BlY3RvckRhdGFiYXNlUmVzb3VyY2UuaCBpbiBIZWFkZXJzICovLAotCQkJCUYz
M0YwNTNFMTIwQjBEQTUwMEU1NzQzQSAvKiBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmggaW4gSGVh
ZGVycyAqLywKIAkJCQk3QTI0NTg3QzEwMjFFQUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdl
bnQuaCBpbiBIZWFkZXJzICovLAogCQkJCTUxNjRFRDQ0MTgzMjA4QzcwMEVBOEZGMSAvKiBJREJT
ZXJ2ZXJDb25uZWN0aW9uTGV2ZWxEQi5oIGluIEhlYWRlcnMgKi8sCiAJCQkJRjNENEM0NzkxMkUw
NzY2MzAwM0RBMTUwIC8qIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCBpbiBIZWFkZXJzICov
LApAQCAtMjQ2OTgsNiArMjQ2OTcsNyBAQAogCQkJCTE0MTE1QjUyMDlGODRCNzEwMENBNEZDMSAv
KiBOb2RlLmggaW4gSGVhZGVycyAqLywKIAkJCQk4NTRGRTczMTBBMjI5N0JFMDA1OEQ3QUQgLyog
Tm9kZUZpbHRlci5oIGluIEhlYWRlcnMgKi8sCiAJCQkJODU0RkU3MzMwQTIyOTdCRTAwNThEN0FE
IC8qIE5vZGVGaWx0ZXJDb25kaXRpb24uaCBpbiBIZWFkZXJzICovLAorCQkJCUE1RTYxNjc0MTg5
NDU4MUYwMDlBREY1MCAvKiBXZWJEZWJ1Z2dlckFnZW50LmggaW4gSGVhZGVycyAqLywKIAkJCQk4
NTRGRTczNTBBMjI5N0JFMDA1OEQ3QUQgLyogTm9kZUl0ZXJhdG9yLmggaW4gSGVhZGVycyAqLywK
IAkJCQlBODE4NzIxQjA5NzdEM0MwMDA1ODI2RDkgLyogTm9kZUxpc3QuaCBpbiBIZWFkZXJzICov
LAogCQkJCTYzMTg5QUUzMEU4M0EzMzMwMDAxMkU0MSAvKiBOb2RlUmFyZURhdGEuaCBpbiBIZWFk
ZXJzICovLApAQCAtMjY5MjYsNiArMjY5MjYsNyBAQAogCQkJCTA3OEUwOTBCMTdEMTRDRUUwMDQy
MEFBMSAvKiBSVENQZWVyQ29ubmVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk4NDczMEQ3
QzEyNDhGMEIzMDBEM0E5QzkgLyogRkVEaXNwbGFjZW1lbnRNYXAuY3BwIGluIFNvdXJjZXMgKi8s
CiAJCQkJNDM1OEU4ODAxMzYwQTMxNzAwRTQ3NDhDIC8qIEZFRHJvcFNoYWRvdy5jcHAgaW4gU291
cmNlcyAqLywKKwkJCQlBNUU2MTY3MzE4OTQ1ODFGMDA5QURGNTAgLyogV2ViRGVidWdnZXJBZ2Vu
dC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk1MUQ3MTlGOTE4MTEwNkUwMDAxNkRDNTEgLyogUGFn
ZUdyb3VwSW5kZXhlZERhdGFiYXNlLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0NzMwRDdFMTI0
OEYwQjMwMEQzQTlDOSAvKiBGRUZsb29kLmNwcCBpbiBTb3VyY2VzICovLAogCQkJCTg0ODAxOTU0
MTA4QkFGQjMwMENCMkIxRiAvKiBGRUdhdXNzaWFuQmx1ci5jcHAgaW4gU291cmNlcyAqLywKQEAg
LTI3MjU0LDcgKzI3MjU1LDYgQEAKIAkJCQk0QTlDQzgyMDE2QkY5QkI0MDBFQzY0NUEgLyogSW5z
cGVjdG9yQ1NTT01XcmFwcGVycy5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QUIwQjFDMDEyMTFB
NjIyMDBBNzY5NDAgLyogSW5zcGVjdG9yRGF0YWJhc2VBZ2VudC5jcHAgaW4gU291cmNlcyAqLywK
IAkJCQk0MUYwNjIxNTBGNUYxOTI2MDBBMDdFQUMgLyogSW5zcGVjdG9yRGF0YWJhc2VSZXNvdXJj
ZS5jcHAgaW4gU291cmNlcyAqLywKLQkJCQlGMzNGMDUzRDEyMEIwREE1MDBFNTc0M0EgLyogSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQk3QTI0NTg3QjEwMjFF
QUY0MDAwQTAwQUEgLyogSW5zcGVjdG9yRE9NQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJ
MEZDNEU0MEYxODdGODJFMTAwNDU4ODJDIC8qIFNjcm9sbGluZ1RyZWVJT1MuY3BwIGluIFNvdXJj
ZXMgKi8sCiAJCQkJRjNENEM0NzgxMkUwNzY2MzAwM0RBMTUwIC8qIEluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQuY3BwIGluIFNvdXJjZXMgKi8sCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckFsbEluT25lLmNwcAppbmRleCAwNmMwZTAwLi5mNzI1MjIzIDEwMDY0NAotLS0g
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQWxsSW5PbmUuY3BwCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JBbGxJbk9uZS5jcHAKQEAgLTQ0LDcgKzQ0
LDYgQEAKICNpbmNsdWRlICJJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwIgogI2luY2x1ZGUg
Ikluc3BlY3RvckRhdGFiYXNlQWdlbnQuY3BwIgogI2luY2x1ZGUgIkluc3BlY3RvckRhdGFiYXNl
UmVzb3VyY2UuY3BwIgotI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwIgogI2lu
Y2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xpZW50TG9jYWwuY3BwIgogI2luY2x1ZGUgIkluc3Bl
Y3RvckZyb250ZW5kSG9zdC5jcHAiCiAjaW5jbHVkZSAiSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdl
bnQuY3BwIgpAQCAtNzUsNiArNzQsNyBAQAogI2luY2x1ZGUgIlNjcmlwdENhbGxGcmFtZS5jcHAi
CiAjaW5jbHVkZSAiU2NyaXB0Q2FsbFN0YWNrLmNwcCIKICNpbmNsdWRlICJUaW1lbGluZVJlY29y
ZEZhY3RvcnkuY3BwIgorI2luY2x1ZGUgIldlYkRlYnVnZ2VyQWdlbnQuY3BwIgogI2luY2x1ZGUg
IldvcmtlckNvbnNvbGVBZ2VudC5jcHAiCiAjaW5jbHVkZSAiV29ya2VyRGVidWdnZXJBZ2VudC5j
cHAiCiAjaW5jbHVkZSAiV29ya2VySW5zcGVjdG9yQ29udHJvbGxlci5jcHAiCmRpZmYgLS1naXQg
YS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5jcHAKaW5kZXggNGZmMTM1
ZS4uNDMxYmFhZCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckNvbnRyb2xsZXIuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JD
b250cm9sbGVyLmNwcApAQCAtNDUsNyArNDUsNiBAQAogI2luY2x1ZGUgIkluc3BlY3RvckRPTURl
YnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCIKICNp
bmNsdWRlICJJbnNwZWN0b3JEYXRhYmFzZUFnZW50LmgiCi0jaW5jbHVkZSAiSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckZyb250ZW5kQ2xpZW50LmgiCiAjaW5j
bHVkZSAiSW5zcGVjdG9ySGVhcFByb2ZpbGVyQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJ
bmRleGVkREJBZ2VudC5oIgpAQCAtMTQ3LDcgKzE0Niw3IEBAIEluc3BlY3RvckNvbnRyb2xsZXI6
Okluc3BlY3RvckNvbnRyb2xsZXIoUGFnZSYgcGFnZSwgSW5zcGVjdG9yQ2xpZW50KiBpbnNwZWN0
b3JDCiAgICAgbV9hZ2VudHMuYXBwZW5kKHN0ZDo6bW92ZShjb25zb2xlQWdlbnRQdHIpKTsKIAog
I2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAgIGF1dG8gZGVidWdnZXJBZ2VudFB0
ciA9IHN0ZDo6bWFrZV91bmlxdWU8UGFnZURlYnVnZ2VyQWdlbnQ+KG1faW5zdHJ1bWVudGluZ0Fn
ZW50cy5nZXQoKSwgcGFnZUFnZW50LCBtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSwgbV9v
dmVybGF5LmdldCgpKTsKKyAgICBhdXRvIGRlYnVnZ2VyQWdlbnRQdHIgPSBzdGQ6Om1ha2VfdW5p
cXVlPFBhZ2VEZWJ1Z2dlckFnZW50PihtX2luamVjdGVkU2NyaXB0TWFuYWdlci5nZXQoKSwgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCBwYWdlQWdlbnQsIG1fb3ZlcmxheS5nZXQoKSk7CiAg
ICAgbV9kZWJ1Z2dlckFnZW50ID0gZGVidWdnZXJBZ2VudFB0ci5nZXQoKTsKICAgICBtX2FnZW50
cy5hcHBlbmQoc3RkOjptb3ZlKGRlYnVnZ2VyQWdlbnRQdHIpKTsKIApkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xsZXIuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDb250cm9sbGVyLmgKaW5kZXggNDA1ZTY5My4uODFlZjgx
NiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNvbnRyb2xs
ZXIuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ29udHJvbGxlci5o
CkBAIC00NCw5ICs0NCwxMCBAQAogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIEluc3Bl
Y3RvckFnZW50OwotY2xhc3MgSW5zcGVjdG9yT2JqZWN0OwotY2xhc3MgSW5zcGVjdG9yRnJvbnRl
bmRDaGFubmVsOwogY2xhc3MgSW5zcGVjdG9yQmFja2VuZERpc3BhdGNoZXI7CitjbGFzcyBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50OworY2xhc3MgSW5zcGVjdG9yRnJvbnRlbmRDaGFubmVsOworY2xh
c3MgSW5zcGVjdG9yT2JqZWN0OwogfQogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CkBAIC01OCw3ICs1
OSw2IEBAIGNsYXNzIEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2VudDsKIGNsYXNzIEluc3Bl
Y3RvckNsaWVudDsKIGNsYXNzIEluc3BlY3RvckRPTUFnZW50OwogY2xhc3MgSW5zcGVjdG9yRE9N
RGVidWdnZXJBZ2VudDsKLWNsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ7CiBjbGFzcyBJbnNw
ZWN0b3JGcm9udGVuZENsaWVudDsKIGNsYXNzIEluc3BlY3Rvck1lbW9yeUFnZW50OwogY2xhc3Mg
SW5zcGVjdG9yT3ZlcmxheTsKQEAgLTE1Niw3ICsxNTYsNyBAQCBwcml2YXRlOgogICAgIEluc3Bl
Y3RvclBhZ2VBZ2VudCogbV9wYWdlQWdlbnQ7CiAgICAgSW5zcGVjdG9yTWVtb3J5QWdlbnQqIG1f
bWVtb3J5QWdlbnQ7CiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgSW5zcGVj
dG9yRGVidWdnZXJBZ2VudCogbV9kZWJ1Z2dlckFnZW50OworICAgIEluc3BlY3Rvcjo6SW5zcGVj
dG9yRGVidWdnZXJBZ2VudCogbV9kZWJ1Z2dlckFnZW50OwogICAgIEluc3BlY3RvckRPTURlYnVn
Z2VyQWdlbnQqIG1fZG9tRGVidWdnZXJBZ2VudDsKICAgICBJbnNwZWN0b3JQcm9maWxlckFnZW50
KiBtX3Byb2ZpbGVyQWdlbnQ7CiAjZW5kaWYKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2lu
c3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmNwcAppbmRleCA5N2IyOTFkLi43Y2M4
ZWJlIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NRGVi
dWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQuY3BwCkBAIC0yOSwxNCArMjksMTIgQEAKICAqLwogCiAjaW5jbHVkZSAi
Y29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoSU5TUEVDVE9SKSAmJiBFTkFCTEUoSkFWQVNDUklQVF9E
RUJVR0dFUikKLQogI2luY2x1ZGUgIkluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCIKIAorI2lm
IEVOQUJMRShJTlNQRUNUT1IpICYmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorCiAjaW5j
bHVkZSAiSFRNTEVsZW1lbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JET01BZ2VudC5oIgotI2lu
Y2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uaCIKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJGcm9udGVuZERpc3BhdGNoZXJz
LmgiCiAjaW5jbHVkZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQuaCBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgKaW5kZXggYzMyMzc4
Yy4uNGRkNzkyYyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTURlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yRE9NRGVidWdnZXJBZ2VudC5oCkBAIC0zMyw5ICszMyw5IEBACiAKICNpZiBFTkFCTEUoSkFW
QVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElOU1BFQ1RPUikKIAotI2luY2x1ZGUgIkluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJJbnNwZWN0b3JXZWJBZ2VudEJhc2UuaCIK
ICNpbmNsdWRlICJJbnNwZWN0b3JXZWJCYWNrZW5kRGlzcGF0Y2hlcnMuaCIKKyNpbmNsdWRlIDxp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaD4KICNpbmNsdWRlIDx3dGYv
SGFzaE1hcC5oPgogI2luY2x1ZGUgPHd0Zi9QYXNzT3duUHRyLmg+CiAjaW5jbHVkZSA8d3RmL1Jl
ZkNvdW50ZWQuaD4KQEAgLTQ5LDE2ICs0OSwxNSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNs
YXNzIEVsZW1lbnQ7CiBjbGFzcyBJbnNwZWN0b3JET01BZ2VudDsKLWNsYXNzIEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQ7CiBjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRzOwogY2xhc3MgTm9kZTsKIAog
dHlwZWRlZiBTdHJpbmcgRXJyb3JTdHJpbmc7CiAKLWNsYXNzIEluc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudDo6TGlzdGVuZXIsIHB1YmxpYyBJbnNwZWN0b3I6Okluc3BlY3RvckRPTURlYnVnZ2Vy
QmFja2VuZERpc3BhdGNoZXJIYW5kbGVyIHsKK2NsYXNzIEluc3BlY3RvckRPTURlYnVnZ2VyQWdl
bnQgOiBwdWJsaWMgSW5zcGVjdG9yQWdlbnRCYXNlLCBwdWJsaWMgSW5zcGVjdG9yOjpJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpMaXN0ZW5lciwgcHVibGljIEluc3BlY3Rvcjo6SW5zcGVjdG9yRE9N
RGVidWdnZXJCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXIgewogICAgIFdURl9NQUtFX05PTkNPUFlB
QkxFKEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQpOwogcHVibGljOgotICAgIEluc3BlY3RvckRP
TURlYnVnZ2VyQWdlbnQoSW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvckRPTUFnZW50Kiwg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudCopOworICAgIEluc3BlY3RvckRPTURlYnVnZ2VyQWdlbnQo
SW5zdHJ1bWVudGluZ0FnZW50cyosIEluc3BlY3RvckRPTUFnZW50KiwgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50Kik7CiAgICAgdmlydHVhbCB+SW5zcGVjdG9yRE9NRGVidWdnZXJB
Z2VudCgpOwogCiAgICAgLy8gRE9NRGVidWdnZXIgQVBJCkBAIC04Niw3ICs4NSw3IEBAIHB1Ymxp
YzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZEFnZW50KCkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6
Ci0gICAgLy8gSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6TGlzdGVuZXIgaW1wbGVtZW50YXRpb24u
CisgICAgLy8gSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpMaXN0ZW5lciBpbXBs
ZW1lbnRhdGlvbi4KICAgICB2aXJ0dWFsIHZvaWQgZGVidWdnZXJXYXNFbmFibGVkKCkgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIGRlYnVnZ2VyV2FzRGlzYWJsZWQoKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgc3RlcEludG8oKSBvdmVycmlkZTsKQEAgLTEwMyw3ICsxMDIsNyBAQCBw
cml2YXRlOgogICAgIHZvaWQgY2xlYXIoKTsKIAogICAgIEluc3BlY3RvckRPTUFnZW50KiBtX2Rv
bUFnZW50OwotICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIG1fZGVidWdnZXJBZ2VudDsKKyAg
ICBJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIG1fZGVidWdnZXJBZ2VudDsKICAg
ICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JET01EZWJ1Z2dlckJhY2tlbmREaXNwYXRjaGVy
PiBtX2JhY2tlbmREaXNwYXRjaGVyOwogICAgIEhhc2hNYXA8Tm9kZSosIHVpbnQzMl90PiBtX2Rv
bUJyZWFrcG9pbnRzOwogICAgIEhhc2hTZXQ8U3RyaW5nPiBtX2V2ZW50TGlzdGVuZXJCcmVha3Bv
aW50czsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbnN0
cnVtZW50YXRpb24uY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3Ry
dW1lbnRhdGlvbi5jcHAKaW5kZXggODAzY2E0ZC4uZjQ2NWY0MSAxMDA2NDQKLS0tIGEvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvckluc3RydW1lbnRhdGlvbi5jcHAKQEAgLTI5
LDExICsyOSwxMCBAQAogKi8KIAogI2luY2x1ZGUgImNvbmZpZy5oIgotCi0jaWYgRU5BQkxFKElO
U1BFQ1RPUikKLQogI2luY2x1ZGUgIkluc3BlY3Rvckluc3RydW1lbnRhdGlvbi5oIgogCisjaWYg
RU5BQkxFKElOU1BFQ1RPUikKKwogI2luY2x1ZGUgIkNTU1J1bGUuaCIKICNpbmNsdWRlICJDU1NT
dHlsZVJ1bGUuaCIKICNpbmNsdWRlICJDb25zb2xlQVBJVHlwZXMuaCIKQEAgLTUyLDcgKzUxLDYg
QEAKICNpbmNsdWRlICJJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50LmgiCiAjaW5jbHVkZSAiSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yRGF0YWJhc2VBZ2Vu
dC5oIgotI2luY2x1ZGUgIkluc3BlY3RvckRlYnVnZ2VyQWdlbnQuaCIKICNpbmNsdWRlICJJbnNw
ZWN0b3JIZWFwUHJvZmlsZXJBZ2VudC5oIgogI2luY2x1ZGUgIkluc3BlY3RvckxheWVyVHJlZUFn
ZW50LmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yUGFnZUFnZW50LmgiCkBAIC03Niw2ICs3NCw3IEBA
CiAjaW5jbHVkZSAiV29ya2VyUnVudGltZUFnZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyVGhyZWFk
LmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3QuaCIKKyNpbmNsdWRlIDxpbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaD4KICNpbmNsdWRlIDx3dGYvU3RkTGliRXh0cmFz
Lmg+CiAjaW5jbHVkZSA8d3RmL3RleHQvQ1N0cmluZy5oPgogCkBAIC04ODQsMTQgKzg4MywyMyBA
QCB2b2lkIEluc3BlY3Rvckluc3RydW1lbnRhdGlvbjo6ZGlkV3JpdGVIVE1MSW1wbChjb25zdCBJ
bnNwZWN0b3JJbnN0cnVtZW50YXRpb25DbwogICAgICAgICB0aW1lbGluZUFnZW50LT5kaWRXcml0
ZUhUTUwoZW5kTGluZSk7CiB9CiAKKy8vIEphdmFTY3JpcHRDb3JlIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQgc2hvdWxkIGtub3cgQ29uc29sZSBNZXNzYWdlVHlwZXMuCitzdGF0aWMgYm9vbCBpc0Nv
bnNvbGVBc3NlcnRNZXNzYWdlKE1lc3NhZ2VTb3VyY2Ugc291cmNlLCBNZXNzYWdlVHlwZSB0eXBl
KQoreworICAgIHJldHVybiBzb3VyY2UgPT0gQ29uc29sZUFQSU1lc3NhZ2VTb3VyY2UgJiYgdHlw
ZSA9PSBBc3NlcnRNZXNzYWdlVHlwZTsKK30KKwogLy8gRklYTUU6IERyb3AgdGhpcyBvbmNlIHdl
IG5vIGxvbmdlciBnZW5lcmF0ZSBzdGFja3Mgb3V0c2lkZSBvZiBJbnNwZWN0b3IuCiB2b2lkIElu
c3BlY3Rvckluc3RydW1lbnRhdGlvbjo6YWRkTWVzc2FnZVRvQ29uc29sZUltcGwoSW5zdHJ1bWVu
dGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgTWVzc2FnZVNvdXJjZSBzb3VyY2UsIE1l
c3NhZ2VUeXBlIHR5cGUsIE1lc3NhZ2VMZXZlbCBsZXZlbCwgY29uc3QgU3RyaW5nJiBtZXNzYWdl
LCBQYXNzUmVmUHRyPFNjcmlwdENhbGxTdGFjaz4gY2FsbFN0YWNrLCB1bnNpZ25lZCBsb25nIHJl
cXVlc3RJZGVudGlmaWVyKQogewogICAgIGlmIChJbnNwZWN0b3JDb25zb2xlQWdlbnQqIGNvbnNv
bGVBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3BlY3RvckNvbnNvbGVBZ2VudCgpKQog
ICAgICAgICBjb25zb2xlQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCB0eXBlLCBs
ZXZlbCwgbWVzc2FnZSwgY2FsbFN0YWNrLCByZXF1ZXN0SWRlbnRpZmllcik7CiAjaWYgRU5BQkxF
KEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgaWYgKEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGRl
YnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JEZWJ1Z2dlckFnZW50
KCkpCi0gICAgICAgIGRlYnVnZ2VyQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291cmNlLCB0
eXBlKTsKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQganVzdCBwYXNzIHRoZSBtZXNzYWdlIG9u
IHRvIHRoZSBkZWJ1Z2dlciBhZ2VudC4gSmF2YVNjcmlwdENvcmUgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudCBzaG91bGQga25vdyBDb25zb2xlIE1lc3NhZ2VUeXBlcy4KKyAgICBpZiAoSW5zcGVjdG9y
RGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMtPmluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQoKSkgeworICAgICAgICBpZiAoaXNDb25zb2xlQXNzZXJ0TWVzc2Fn
ZShzb3VyY2UsIHR5cGUpKQorICAgICAgICAgICAgZGVidWdnZXJBZ2VudC0+aGFuZGxlQ29uc29s
ZUFzc2VydCgpOworICAgIH0KICNlbmRpZgogfQogCkBAIC05MDAsOCArOTA4LDExIEBAIHZvaWQg
SW5zcGVjdG9ySW5zdHJ1bWVudGF0aW9uOjphZGRNZXNzYWdlVG9Db25zb2xlSW1wbChJbnN0cnVt
ZW50aW5nQWdlbnRzKiBpbnN0CiAgICAgaWYgKEluc3BlY3RvckNvbnNvbGVBZ2VudCogY29uc29s
ZUFnZW50ID0gaW5zdHJ1bWVudGluZ0FnZW50cy0+aW5zcGVjdG9yQ29uc29sZUFnZW50KCkpCiAg
ICAgICAgIGNvbnNvbGVBZ2VudC0+YWRkTWVzc2FnZVRvQ29uc29sZShzb3VyY2UsIHR5cGUsIGxl
dmVsLCBtZXNzYWdlLCBzdGF0ZSwgYXJndW1lbnRzLCByZXF1ZXN0SWRlbnRpZmllcik7CiAjaWYg
RU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpCi0gICAgaWYgKEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQqIGRlYnVnZ2VyQWdlbnQgPSBpbnN0cnVtZW50aW5nQWdlbnRzLT5pbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50KCkpCi0gICAgICAgIGRlYnVnZ2VyQWdlbnQtPmFkZE1lc3NhZ2VUb0NvbnNvbGUoc291
cmNlLCB0eXBlKTsKKyAgICAvLyBGSVhNRTogVGhpcyBzaG91bGQganVzdCBwYXNzIHRoZSBtZXNz
YWdlIG9uIHRvIHRoZSBkZWJ1Z2dlciBhZ2VudC4gSmF2YVNjcmlwdENvcmUgSW5zcGVjdG9yRGVi
dWdnZXJBZ2VudCBzaG91bGQga25vdyBDb25zb2xlIE1lc3NhZ2VUeXBlcy4KKyAgICBpZiAoSW5z
cGVjdG9yRGVidWdnZXJBZ2VudCogZGVidWdnZXJBZ2VudCA9IGluc3RydW1lbnRpbmdBZ2VudHMt
Pmluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKSkgeworICAgICAgICBpZiAoaXNDb25zb2xlQXNzZXJ0
TWVzc2FnZShzb3VyY2UsIHR5cGUpKQorICAgICAgICAgICAgZGVidWdnZXJBZ2VudC0+aGFuZGxl
Q29uc29sZUFzc2VydCgpOworICAgIH0KICNlbmRpZgogfQogCmRpZmYgLS1naXQgYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5oIGIvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3RydW1lbnRpbmdBZ2VudHMuaAppbmRleCBiNWM4Yzg1Li5hZmFiY2U2IDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zdHJ1bWVudGluZ0FnZW50cy5o
CisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnN0cnVtZW50aW5nQWdlbnRzLmgKQEAg
LTM5LDYgKzM5LDcgQEAKIAogbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBJbnNwZWN0b3JB
Z2VudDsKK2NsYXNzIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ7CiB9CiAKIG5hbWVzcGFjZSBXZWJD
b3JlIHsKQEAgLTUxLDcgKzUyLDYgQEAgY2xhc3MgSW5zcGVjdG9yRE9NQWdlbnQ7CiBjbGFzcyBJ
bnNwZWN0b3JET01EZWJ1Z2dlckFnZW50OwogY2xhc3MgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50
OwogY2xhc3MgSW5zcGVjdG9yRGF0YWJhc2VBZ2VudDsKLWNsYXNzIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ7CiBjbGFzcyBJbnNwZWN0b3JIZWFwUHJvZmlsZXJBZ2VudDsKIGNsYXNzIEluc3BlY3Rv
ckxheWVyVHJlZUFnZW50OwogY2xhc3MgSW5zcGVjdG9yUGFnZUFnZW50OwpAQCAtMTE3LDggKzEx
Nyw4IEBAIHB1YmxpYzoKICAgICB2b2lkIHNldEluc3BlY3RvckFwcGxpY2F0aW9uQ2FjaGVBZ2Vu
dChJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQqIGFnZW50KSB7IG1faW5zcGVjdG9yQXBw
bGljYXRpb25DYWNoZUFnZW50ID0gYWdlbnQ7IH0KIAogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RF
QlVHR0VSKQotICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIGluc3BlY3RvckRlYnVnZ2VyQWdl
bnQoKSBjb25zdCB7IHJldHVybiBtX2luc3BlY3RvckRlYnVnZ2VyQWdlbnQ7IH0KLSAgICB2b2lk
IHNldEluc3BlY3RvckRlYnVnZ2VyQWdlbnQoSW5zcGVjdG9yRGVidWdnZXJBZ2VudCogYWdlbnQp
IHsgbV9pbnNwZWN0b3JEZWJ1Z2dlckFnZW50ID0gYWdlbnQ7IH0KKyAgICBJbnNwZWN0b3I6Oklu
c3BlY3RvckRlYnVnZ2VyQWdlbnQqIGluc3BlY3RvckRlYnVnZ2VyQWdlbnQoKSBjb25zdCB7IHJl
dHVybiBtX2luc3BlY3RvckRlYnVnZ2VyQWdlbnQ7IH0KKyAgICB2b2lkIHNldEluc3BlY3RvckRl
YnVnZ2VyQWdlbnQoSW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KiBhZ2VudCkgeyBt
X2luc3BlY3RvckRlYnVnZ2VyQWdlbnQgPSBhZ2VudDsgfQogCiAgICAgUGFnZURlYnVnZ2VyQWdl
bnQqIHBhZ2VEZWJ1Z2dlckFnZW50KCkgY29uc3QgeyByZXR1cm4gbV9wYWdlRGVidWdnZXJBZ2Vu
dDsgfQogICAgIHZvaWQgc2V0UGFnZURlYnVnZ2VyQWdlbnQoUGFnZURlYnVnZ2VyQWdlbnQqIGFn
ZW50KSB7IG1fcGFnZURlYnVnZ2VyQWdlbnQgPSBhZ2VudDsgfQpAQCAtMTY3LDcgKzE2Nyw3IEBA
IHByaXZhdGU6CiAjZW5kaWYKICAgICBJbnNwZWN0b3JBcHBsaWNhdGlvbkNhY2hlQWdlbnQqIG1f
aW5zcGVjdG9yQXBwbGljYXRpb25DYWNoZUFnZW50OwogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RF
QlVHR0VSKQotICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIG1faW5zcGVjdG9yRGVidWdnZXJB
Z2VudDsKKyAgICBJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQqIG1faW5zcGVjdG9y
RGVidWdnZXJBZ2VudDsKICAgICBQYWdlRGVidWdnZXJBZ2VudCogbV9wYWdlRGVidWdnZXJBZ2Vu
dDsKICAgICBJbnNwZWN0b3JET01EZWJ1Z2dlckFnZW50KiBtX2luc3BlY3RvckRPTURlYnVnZ2Vy
QWdlbnQ7CiAgICAgSW5zcGVjdG9yUHJvZmlsZXJBZ2VudCogbV9pbnNwZWN0b3JQcm9maWxlckFn
ZW50OwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFn
ZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5jcHAK
aW5kZXggZDAxNTg1YS4uNmIzOGYzYSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
UGFnZURlYnVnZ2VyQWdlbnQuY3BwCkBAIC0yOSwxMSArMjksMTEgQEAKICAqLwogCiAjaW5jbHVk
ZSAiY29uZmlnLmgiCi0KLSNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxF
KElOU1BFQ1RPUikKLQogI2luY2x1ZGUgIlBhZ2VEZWJ1Z2dlckFnZW50LmgiCiAKKyNpZiBFTkFC
TEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElOU1BFQ1RPUikKKworI2luY2x1ZGUg
IkNhY2hlZFJlc291cmNlLmgiCiAjaW5jbHVkZSAiSW5zcGVjdG9yT3ZlcmxheS5oIgogI2luY2x1
ZGUgIkluc3BlY3RvclBhZ2VBZ2VudC5oIgogI2luY2x1ZGUgIkluc3RydW1lbnRpbmdBZ2VudHMu
aCIKQEAgLTQ4LDI5ICs0OCw0NiBAQCB1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwogCiBuYW1l
c3BhY2UgV2ViQ29yZSB7CiAKLVBhZ2VEZWJ1Z2dlckFnZW50OjpQYWdlRGVidWdnZXJBZ2VudChJ
bnN0cnVtZW50aW5nQWdlbnRzKiBpbnN0cnVtZW50aW5nQWdlbnRzLCBJbnNwZWN0b3JQYWdlQWdl
bnQqIHBhZ2VBZ2VudCwgSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFn
ZXIsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJsYXkpCi0gICAgOiBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50KGluc3RydW1lbnRpbmdBZ2VudHMsIGluamVjdGVkU2NyaXB0TWFuYWdlcikKK1BhZ2VEZWJ1
Z2dlckFnZW50OjpQYWdlRGVidWdnZXJBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVj
dGVkU2NyaXB0TWFuYWdlciwgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50
cywgSW5zcGVjdG9yUGFnZUFnZW50KiBwYWdlQWdlbnQsIEluc3BlY3Rvck92ZXJsYXkqIG92ZXJs
YXkpCisgICAgOiBXZWJEZWJ1Z2dlckFnZW50KGluamVjdGVkU2NyaXB0TWFuYWdlciwgaW5zdHJ1
bWVudGluZ0FnZW50cykKICAgICAsIG1fcGFnZUFnZW50KHBhZ2VBZ2VudCkKICAgICAsIG1fb3Zl
cmxheShvdmVybGF5KQogewogfQogCi1QYWdlRGVidWdnZXJBZ2VudDo6flBhZ2VEZWJ1Z2dlckFn
ZW50KCkKLXsKLX0KLQogdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6ZW5hYmxlKCkKIHsKLSAgICBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjplbmFibGUoKTsKKyAgICBXZWJEZWJ1Z2dlckFnZW50Ojpl
bmFibGUoKTsKICAgICBtX2luc3RydW1lbnRpbmdBZ2VudHMtPnNldFBhZ2VEZWJ1Z2dlckFnZW50
KHRoaXMpOwogfQogCiB2b2lkIFBhZ2VEZWJ1Z2dlckFnZW50OjpkaXNhYmxlKGJvb2wgaXNCZWlu
Z0Rlc3Ryb3llZCkKIHsKLSAgICBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpkaXNhYmxlKGlzQmVp
bmdEZXN0cm95ZWQpOworICAgIFdlYkRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoaXNCZWluZ0Rlc3Ry
b3llZCk7CiAgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRQYWdlRGVidWdnZXJBZ2VudChu
dWxscHRyKTsKIH0KIAorU3RyaW5nIFBhZ2VEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JT
Y3JpcHQoY29uc3QgU2NyaXB0JiBzY3JpcHQpCit7CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChT
dHJpbmcsIHNvdXJjZU1hcEhUVFBIZWFkZXIsIChBU0NJSUxpdGVyYWwoIlNvdXJjZU1hcCIpKSk7
CisgICAgREVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIHNvdXJjZU1hcEhUVFBIZWFkZXJEZXBy
ZWNhdGVkLCAoQVNDSUlMaXRlcmFsKCJYLVNvdXJjZU1hcCIpKSk7CisKKyAgICBpZiAoIXNjcmlw
dC51cmwuaXNFbXB0eSgpKSB7CisgICAgICAgIENhY2hlZFJlc291cmNlKiByZXNvdXJjZSA9IG1f
cGFnZUFnZW50LT5jYWNoZWRSZXNvdXJjZShtX3BhZ2VBZ2VudC0+bWFpbkZyYW1lKCksIFVSTChQ
YXJzZWRVUkxTdHJpbmcsIHNjcmlwdC51cmwpKTsKKyAgICAgICAgaWYgKHJlc291cmNlKSB7Cisg
ICAgICAgICAgICBTdHJpbmcgc291cmNlTWFwSGVhZGVyID0gcmVzb3VyY2UtPnJlc3BvbnNlKCku
aHR0cEhlYWRlckZpZWxkKHNvdXJjZU1hcEhUVFBIZWFkZXIpOworICAgICAgICAgICAgaWYgKCFz
b3VyY2VNYXBIZWFkZXIuaXNFbXB0eSgpKQorICAgICAgICAgICAgICAgIHJldHVybiBzb3VyY2VN
YXBIZWFkZXI7CisKKyAgICAgICAgICAgIHNvdXJjZU1hcEhlYWRlciA9IHJlc291cmNlLT5yZXNw
b25zZSgpLmh0dHBIZWFkZXJGaWVsZChzb3VyY2VNYXBIVFRQSGVhZGVyRGVwcmVjYXRlZCk7Cisg
ICAgICAgICAgICBpZiAoIXNvdXJjZU1hcEhlYWRlci5pc0VtcHR5KCkpCisgICAgICAgICAgICAg
ICAgcmV0dXJuIHNvdXJjZU1hcEhlYWRlcjsKKyAgICAgICAgfQorICAgIH0KKworICAgIHJldHVy
biBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpzb3VyY2VNYXBVUkxGb3JTY3JpcHQoc2NyaXB0KTsK
K30KKwogdm9pZCBQYWdlRGVidWdnZXJBZ2VudDo6c3RhcnRMaXN0ZW5pbmdTY3JpcHREZWJ1Z1Nl
cnZlcigpCiB7CiAgICAgc2NyaXB0RGVidWdTZXJ2ZXIoKS5hZGRMaXN0ZW5lcih0aGlzLCBtX3Bh
Z2VBZ2VudC0+cGFnZSgpKTsKQEAgLTEwNyw5ICsxMjQsMTEgQEAgSW5qZWN0ZWRTY3JpcHQgUGFn
ZURlYnVnZ2VyQWdlbnQ6OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyogZXJyb3JT
dHJpbmcKICAgICAgICAgSlNDOjpFeGVjU3RhdGUqIHNjcmlwdFN0YXRlID0gbWFpbldvcmxkRXhl
Y1N0YXRlKG1fcGFnZUFnZW50LT5tYWluRnJhbWUoKSk7CiAgICAgICAgIHJldHVybiBpbmplY3Rl
ZFNjcmlwdE1hbmFnZXIoKS0+aW5qZWN0ZWRTY3JpcHRGb3Ioc2NyaXB0U3RhdGUpOwogICAgIH0K
KwogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gaW5qZWN0ZWRTY3JpcHRNYW5h
Z2VyKCktPmluamVjdGVkU2NyaXB0Rm9ySWQoKmV4ZWN1dGlvbkNvbnRleHRJZCk7CiAgICAgaWYg
KGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkKLSAgICAgICAgKmVycm9yU3RyaW5nID0gIkV4
ZWN1dGlvbiBjb250ZXh0IHdpdGggZ2l2ZW4gaWQgbm90IGZvdW5kLiI7CisgICAgICAgICplcnJv
clN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiRXhlY3V0aW9uIGNvbnRleHQgd2l0aCBnaXZlbiBpZCBu
b3QgZm91bmQuIik7CisKICAgICByZXR1cm4gaW5qZWN0ZWRTY3JpcHQ7CiB9CiAKZGlmZiAtLWdp
dCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9QYWdlRGVidWdnZXJBZ2VudC5oIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgKaW5kZXggYmJhZjNkNS4uMDFl
M2FkOSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFn
ZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1BhZ2VEZWJ1Z2dlckFnZW50LmgK
QEAgLTMzLDIyICszMywyMyBAQAogCiAjaWYgRU5BQkxFKEpBVkFTQ1JJUFRfREVCVUdHRVIpICYm
IEVOQUJMRShJTlNQRUNUT1IpCiAKLSNpbmNsdWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmgi
CiAjaW5jbHVkZSAiUGFnZVNjcmlwdERlYnVnU2VydmVyLmgiCisjaW5jbHVkZSAiV2ViRGVidWdn
ZXJBZ2VudC5oIgogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKIGNsYXNzIEluc3BlY3Rvck92ZXJs
YXk7CiBjbGFzcyBJbnNwZWN0b3JQYWdlQWdlbnQ7CitjbGFzcyBJbnN0cnVtZW50aW5nQWdlbnRz
OwogY2xhc3MgUGFnZTsKIGNsYXNzIFBhZ2VTY3JpcHREZWJ1Z1NlcnZlcjsKIAotY2xhc3MgUGFn
ZURlYnVnZ2VyQWdlbnQgZmluYWwgOiBwdWJsaWMgSW5zcGVjdG9yRGVidWdnZXJBZ2VudCB7Citj
bGFzcyBQYWdlRGVidWdnZXJBZ2VudCBmaW5hbCA6IHB1YmxpYyBXZWJEZWJ1Z2dlckFnZW50IHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShQYWdlRGVidWdnZXJBZ2VudCk7CiAgICAgV1RGX01B
S0VfRkFTVF9BTExPQ0FURUQ7CiBwdWJsaWM6Ci0gICAgUGFnZURlYnVnZ2VyQWdlbnQoSW5zdHJ1
bWVudGluZ0FnZW50cyosIEluc3BlY3RvclBhZ2VBZ2VudCosIEluc3BlY3Rvcjo6SW5qZWN0ZWRT
Y3JpcHRNYW5hZ2VyKiwgSW5zcGVjdG9yT3ZlcmxheSopOwotICAgIHZpcnR1YWwgflBhZ2VEZWJ1
Z2dlckFnZW50KCk7CisgICAgUGFnZURlYnVnZ2VyQWdlbnQoSW5zcGVjdG9yOjpJbmplY3RlZFNj
cmlwdE1hbmFnZXIqLCBJbnN0cnVtZW50aW5nQWdlbnRzKiwgSW5zcGVjdG9yUGFnZUFnZW50Kiwg
SW5zcGVjdG9yT3ZlcmxheSopOworICAgIHZpcnR1YWwgflBhZ2VEZWJ1Z2dlckFnZW50KCkgeyB9
CiAKICAgICB2b2lkIGRpZENsZWFyTWFpbkZyYW1lV2luZG93T2JqZWN0KCk7CiAKQEAgLTU2LDYg
KzU3LDggQEAgcHJvdGVjdGVkOgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoKSBvdmVycmlkZTsK
ICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShib29sIGlzQmVpbmdEZXN0cm95ZWQpIG92ZXJyaWRl
OwogCisgICAgdmlydHVhbCBTdHJpbmcgc291cmNlTWFwVVJMRm9yU2NyaXB0KGNvbnN0IFNjcmlw
dCYpIG92ZXJyaWRlOworCiBwcml2YXRlOgogICAgIHZpcnR1YWwgdm9pZCBzdGFydExpc3Rlbmlu
Z1NjcmlwdERlYnVnU2VydmVyKCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHN0b3BMaXN0
ZW5pbmdTY3JpcHREZWJ1Z1NlcnZlcihib29sIGlzQmVpbmdEZXN0cm95ZWQpIG92ZXJyaWRlOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkRlYnVnZ2VyQWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkRlYnVnZ2VyQWdlbnQuY3BwCm5ldyBmaWxl
IG1vZGUgMTAwNjQ0CmluZGV4IDAwMDAwMDAuLjkyYWY1YTIKLS0tIC9kZXYvbnVsbAorKysgYi9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV2ViRGVidWdnZXJBZ2VudC5jcHAKQEAgLTAsMCArMSw1
OSBAQAorLyoKKyAqIENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVz
ZXJ2ZWQuCisgKgorICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFy
eSBmb3Jtcywgd2l0aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQg
cHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAx
LiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNv
cHlyaWdodAorICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZv
bGxvd2luZyBkaXNjbGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3Jt
IG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBs
aXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAq
ICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRo
ZSBkaXN0cmlidXRpb24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBM
RSBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElF
UywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5U
SUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQ
VVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgor
ICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lE
RU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAo
SU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElU
VVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7
IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVP
UlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElU
WSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lO
RyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElG
IEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNs
dWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJXZWJEZWJ1Z2dlckFnZW50LmgiCisKKyNpZiBFTkFC
TEUoSU5TUEVDVE9SKQorI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQorCisjaW5jbHVk
ZSAiSW5zdHJ1bWVudGluZ0FnZW50cy5oIgorCit1c2luZyBuYW1lc3BhY2UgSW5zcGVjdG9yOwor
CituYW1lc3BhY2UgV2ViQ29yZSB7CisKK1dlYkRlYnVnZ2VyQWdlbnQ6OldlYkRlYnVnZ2VyQWdl
bnQoSW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKiBpbmplY3RlZFNjcmlwdE1hbmFnZXIsIEluc3RydW1l
bnRpbmdBZ2VudHMqIGluc3RydW1lbnRpbmdBZ2VudHMpCisgICAgOiBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50KGluamVjdGVkU2NyaXB0TWFuYWdlcikKKyAgICAsIG1faW5zdHJ1bWVudGluZ0FnZW50
cyhpbnN0cnVtZW50aW5nQWdlbnRzKQoreworfQorCit2b2lkIFdlYkRlYnVnZ2VyQWdlbnQ6OmVu
YWJsZSgpCit7CisgICAgSW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6ZW5hYmxlKCk7CisgICAgbV9p
bnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KHRoaXMpOworfQor
Cit2b2lkIFdlYkRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoYm9vbCBpc0JlaW5nRGVzdHJveWVkKQor
eworICAgIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmRpc2FibGUoaXNCZWluZ0Rlc3Ryb3llZCk7
CisgICAgbV9pbnN0cnVtZW50aW5nQWdlbnRzLT5zZXRJbnNwZWN0b3JEZWJ1Z2dlckFnZW50KG51
bGxwdHIpOworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUo
SkFWQVNDUklQVF9ERUJVR0dFUikKKyNlbmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dlYkRlYnVnZ2VyQWdlbnQuaCBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9XZWJEZWJ1Z2dlckFnZW50LmgKbmV3IGZpbGUgbW9kZSAxMDA2
NDQKaW5kZXggMDAwMDAwMC4uNWM2MTczZgotLS0gL2Rldi9udWxsCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9XZWJEZWJ1Z2dlckFnZW50LmgKQEAgLTAsMCArMSw1OCBAQAorLyoKKyAq
IENvcHlyaWdodCAoQykgMjAxNCBBcHBsZSBJbmMuIEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKgor
ICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBpbiBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0
aCBvciB3aXRob3V0CisgKiBtb2RpZmljYXRpb24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhh
dCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMKKyAqIGFyZSBtZXQ6CisgKiAxLiBSZWRpc3RyaWJ1
dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCByZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAorICog
ICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNj
bGFpbWVyLgorICogMi4gUmVkaXN0cmlidXRpb25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9k
dWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lciBpbiB0aGUKKyAqICAgIGRvY3VtZW50
YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFscyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRp
b24uCisgKgorICogVEhJUyBTT0ZUV0FSRSBJUyBQUk9WSURFRCBCWSBBUFBMRSBJTkMuIGBgQVMg
SVMnJyBBTkQgQU5ZCisgKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFOVElFUywgSU5DTFVESU5H
LCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQorICogSU1QTElFRCBXQVJSQU5USUVTIE9GIE1FUkNI
QU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCisgKiBQVVJQT1NFIEFSRSBE
SVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgSU5DLiBPUgorICogQ09OVFJJQlVU
T1JTIEJFIExJQUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJ
QUwsCisgKiBFWEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBC
VVQgTk9UIExJTUlURUQgVE8sCisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9S
IFNFUlZJQ0VTOyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNT
IElOVEVSUlVQVElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJ
QUJJTElUWSwgV0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAor
ICogKElOQ0xVRElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZ
IE9VVCBPRiBUSEUgVVNFCisgKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0Yg
VEhFIFBPU1NJQklMSVRZIE9GIFNVQ0ggREFNQUdFLgorICovCisKKyNpZm5kZWYgV2ViRGVidWdn
ZXJBZ2VudF9oCisjZGVmaW5lIFdlYkRlYnVnZ2VyQWdlbnRfaAorCisjaWYgRU5BQkxFKElOU1BF
Q1RPUikKKyNpZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKworI2luY2x1ZGUgPGluc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oPgorCituYW1lc3BhY2UgV2ViQ29y
ZSB7CisKK2NsYXNzIEluc3RydW1lbnRpbmdBZ2VudHM7Cit0eXBlZGVmIFN0cmluZyBFcnJvclN0
cmluZzsKKworY2xhc3MgV2ViRGVidWdnZXJBZ2VudCA6IHB1YmxpYyBJbnNwZWN0b3I6Okluc3Bl
Y3RvckRlYnVnZ2VyQWdlbnQgeworICAgIFdURl9NQUtFX05PTkNPUFlBQkxFKFdlYkRlYnVnZ2Vy
QWdlbnQpOworICAgIFdURl9NQUtFX0ZBU1RfQUxMT0NBVEVEOworcHVibGljOgorICAgIFdlYkRl
YnVnZ2VyQWdlbnQoSW5zcGVjdG9yOjpJbmplY3RlZFNjcmlwdE1hbmFnZXIqLCBJbnN0cnVtZW50
aW5nQWdlbnRzKik7CisgICAgdmlydHVhbCB+V2ViRGVidWdnZXJBZ2VudCgpIHsgfQorCitwcm90
ZWN0ZWQ6CisgICAgdmlydHVhbCB2b2lkIGVuYWJsZSgpIG92ZXJyaWRlOworICAgIHZpcnR1YWwg
dm9pZCBkaXNhYmxlKGJvb2wgaXNCZWluZ0Rlc3Ryb3llZCkgb3ZlcnJpZGU7CisKKyAgICBJbnN0
cnVtZW50aW5nQWdlbnRzKiBtX2luc3RydW1lbnRpbmdBZ2VudHM7Cit9OworCit9IC8vIG5hbWVz
cGFjZSBXZWJDb3JlCisKKyNlbmRpZiAvLyBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikKKyNl
bmRpZiAvLyBFTkFCTEUoSU5TUEVDVE9SKQorCisjZW5kaWYgLy8gIWRlZmluZWQoV2ViRGVidWdn
ZXJBZ2VudF9oKQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRl
YnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2Vy
QWdlbnQuY3BwCmluZGV4IGY0YzRjZjAuLjNhOGJhZDUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29y
ZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5jcHAKQEAgLTkyLDggKzkyLDggQEAgcHJp
dmF0ZToKIAogY29uc3QgY2hhciogV29ya2VyRGVidWdnZXJBZ2VudDo6ZGVidWdnZXJUYXNrTW9k
ZSA9ICJkZWJ1Z2dlciI7CiAKLVdvcmtlckRlYnVnZ2VyQWdlbnQ6OldvcmtlckRlYnVnZ2VyQWdl
bnQoSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywgV29ya2VyR2xvYmFs
U2NvcGUqIGluc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlLCBJbmplY3RlZFNjcmlwdE1hbmFnZXIq
IGluamVjdGVkU2NyaXB0TWFuYWdlcikKLSAgICA6IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQoaW5z
dHJ1bWVudGluZ0FnZW50cywgaW5qZWN0ZWRTY3JpcHRNYW5hZ2VyKQorV29ya2VyRGVidWdnZXJB
Z2VudDo6V29ya2VyRGVidWdnZXJBZ2VudChJbmplY3RlZFNjcmlwdE1hbmFnZXIqIGluamVjdGVk
U2NyaXB0TWFuYWdlciwgSW5zdHJ1bWVudGluZ0FnZW50cyogaW5zdHJ1bWVudGluZ0FnZW50cywg
V29ya2VyR2xvYmFsU2NvcGUqIGluc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlKQorICAgIDogV2Vi
RGVidWdnZXJBZ2VudChpbmplY3RlZFNjcmlwdE1hbmFnZXIsIGluc3RydW1lbnRpbmdBZ2VudHMp
CiAgICAgLCBtX3NjcmlwdERlYnVnU2VydmVyKGluc3BlY3RlZFdvcmtlckdsb2JhbFNjb3BlLCBX
b3JrZXJEZWJ1Z2dlckFnZW50OjpkZWJ1Z2dlclRhc2tNb2RlKQogICAgICwgbV9pbnNwZWN0ZWRX
b3JrZXJHbG9iYWxTY29wZShpbnNwZWN0ZWRXb3JrZXJHbG9iYWxTY29wZSkKIHsKQEAgLTE0MCw5
ICsxNDAsMTAgQEAgV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXImIFdvcmtlckRlYnVnZ2VyQWdlbnQ6
OnNjcmlwdERlYnVnU2VydmVyKCkKIEluamVjdGVkU2NyaXB0IFdvcmtlckRlYnVnZ2VyQWdlbnQ6
OmluamVjdGVkU2NyaXB0Rm9yRXZhbChFcnJvclN0cmluZyogZXJyb3IsIGNvbnN0IGludCogZXhl
Y3V0aW9uQ29udGV4dElkKQogewogICAgIGlmIChleGVjdXRpb25Db250ZXh0SWQpIHsKLSAgICAg
ICAgKmVycm9yID0gIkV4ZWN1dGlvbiBjb250ZXh0IGlkIGlzIG5vdCBzdXBwb3J0ZWQgZm9yIHdv
cmtlcnMgYXMgdGhlcmUgaXMgb25seSBvbmUgZXhlY3V0aW9uIGNvbnRleHQuIjsKKyAgICAgICAg
KmVycm9yID0gQVNDSUlMaXRlcmFsKCJFeGVjdXRpb24gY29udGV4dCBpZCBpcyBub3Qgc3VwcG9y
dGVkIGZvciB3b3JrZXJzIGFzIHRoZXJlIGlzIG9ubHkgb25lIGV4ZWN1dGlvbiBjb250ZXh0LiIp
OwogICAgICAgICByZXR1cm4gSW5qZWN0ZWRTY3JpcHQoKTsKICAgICB9CisKICAgICBKU0M6OkV4
ZWNTdGF0ZSogc2NyaXB0U3RhdGUgPSBleGVjU3RhdGVGcm9tV29ya2VyR2xvYmFsU2NvcGUobV9p
bnNwZWN0ZWRXb3JrZXJHbG9iYWxTY29wZSk7CiAgICAgcmV0dXJuIGluamVjdGVkU2NyaXB0TWFu
YWdlcigpLT5pbmplY3RlZFNjcmlwdEZvcihzY3JpcHRTdGF0ZSk7CiB9CmRpZmYgLS1naXQgYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL1dvcmtlckRlYnVnZ2VyQWdlbnQuaAppbmRleCAwOGIwMzJiLi5iMDg2
MDk2IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2VyRGVidWdnZXJB
Z2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJEZWJ1Z2dlckFnZW50
LmgKQEAgLTMyLDcgKzMyLDggQEAKICNkZWZpbmUgV29ya2VyRGVidWdnZXJBZ2VudF9oCiAKICNp
ZiBFTkFCTEUoSkFWQVNDUklQVF9ERUJVR0dFUikgJiYgRU5BQkxFKElOU1BFQ1RPUikKLSNpbmNs
dWRlICJJbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgiCisKKyNpbmNsdWRlICJXZWJEZWJ1Z2dlckFn
ZW50LmgiCiAjaW5jbHVkZSAiV29ya2VyU2NyaXB0RGVidWdTZXJ2ZXIuaCIKIAogbmFtZXNwYWNl
IFdlYkNvcmUgewpAQCAtNDAsMTEgKzQxLDExIEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKIGNsYXNz
IFdvcmtlckdsb2JhbFNjb3BlOwogY2xhc3MgV29ya2VyVGhyZWFkOwogCi1jbGFzcyBXb3JrZXJE
ZWJ1Z2dlckFnZW50IGZpbmFsIDogcHVibGljIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQgeworY2xh
c3MgV29ya2VyRGVidWdnZXJBZ2VudCBmaW5hbCA6IHB1YmxpYyBXZWJEZWJ1Z2dlckFnZW50IHsK
ICAgICBXVEZfTUFLRV9OT05DT1BZQUJMRShXb3JrZXJEZWJ1Z2dlckFnZW50KTsKICAgICBXVEZf
TUFLRV9GQVNUX0FMTE9DQVRFRDsKIHB1YmxpYzoKLSAgICBXb3JrZXJEZWJ1Z2dlckFnZW50KElu
c3RydW1lbnRpbmdBZ2VudHMqLCBXb3JrZXJHbG9iYWxTY29wZSosIEluc3BlY3Rvcjo6SW5qZWN0
ZWRTY3JpcHRNYW5hZ2VyKik7CisgICAgV29ya2VyRGVidWdnZXJBZ2VudChJbnNwZWN0b3I6Oklu
amVjdGVkU2NyaXB0TWFuYWdlciosIEluc3RydW1lbnRpbmdBZ2VudHMqLCBXb3JrZXJHbG9iYWxT
Y29wZSopOwogICAgIHZpcnR1YWwgfldvcmtlckRlYnVnZ2VyQWdlbnQoKTsKIAogICAgIHN0YXRp
YyBjb25zdCBjaGFyKiBkZWJ1Z2dlclRhc2tNb2RlOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL1dvcmtlckluc3BlY3RvckNvbnRyb2xsZXIuY3BwCmluZGV4IDgwODkxYjYu
LjIxZDM5YmQgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9Xb3JrZXJJbnNw
ZWN0b3JDb250cm9sbGVyLmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvV29ya2Vy
SW5zcGVjdG9yQ29udHJvbGxlci5jcHAKQEAgLTkyLDcgKzkyLDcgQEAgV29ya2VySW5zcGVjdG9y
Q29udHJvbGxlcjo6V29ya2VySW5zcGVjdG9yQ29udHJvbGxlcihXb3JrZXJHbG9iYWxTY29wZSYg
d29ya2VyR2wKIAogICAgIGF1dG8gY29uc29sZUFnZW50ID0gc3RkOjptYWtlX3VuaXF1ZTxXb3Jr
ZXJDb25zb2xlQWdlbnQ+KG1faW5zdHJ1bWVudGluZ0FnZW50cy5nZXQoKSwgbV9pbmplY3RlZFNj
cmlwdE1hbmFnZXIuZ2V0KCkpOwogI2lmIEVOQUJMRShKQVZBU0NSSVBUX0RFQlVHR0VSKQotICAg
IGF1dG8gZGVidWdnZXJBZ2VudCA9IHN0ZDo6bWFrZV91bmlxdWU8V29ya2VyRGVidWdnZXJBZ2Vu
dD4obV9pbnN0cnVtZW50aW5nQWdlbnRzLmdldCgpLCAmd29ya2VyR2xvYmFsU2NvcGUsIG1faW5q
ZWN0ZWRTY3JpcHRNYW5hZ2VyLmdldCgpKTsKKyAgICBhdXRvIGRlYnVnZ2VyQWdlbnQgPSBzdGQ6
Om1ha2VfdW5pcXVlPFdvcmtlckRlYnVnZ2VyQWdlbnQ+KG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2Vy
LmdldCgpLCBtX2luc3RydW1lbnRpbmdBZ2VudHMuZ2V0KCksICZ3b3JrZXJHbG9iYWxTY29wZSk7
CiAgICAgbV9ydW50aW1lQWdlbnQtPnNldFNjcmlwdERlYnVnU2VydmVyKCZkZWJ1Z2dlckFnZW50
LT5zY3JpcHREZWJ1Z1NlcnZlcigpKTsKICAgICBtX2FnZW50cy5hcHBlbmQoc3RkOjptb3ZlKGRl
YnVnZ2VyQWdlbnQpKTsKIAo=
</data>
<flag name="review"
          id="246220"
          type_id="1"
          status="+"
          setter="sam"
    />
          </attachment>
      

    </bug>

</bugzilla>