<?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>146091</bug_id>
          
          <creation_ts>2015-06-17 17:44:57 -0700</creation_ts>
          <short_desc>Web Inspector: improve generated types for objects passed to backend commands</short_desc>
          <delta_ts>2015-06-18 15:08:31 -0700</delta_ts>
          <reporter_accessible>1</reporter_accessible>
          <cclist_accessible>1</cclist_accessible>
          <classification_id>1</classification_id>
          <classification>Unclassified</classification>
          <product>WebKit</product>
          <component>Web Inspector</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>All</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          <see_also>https://bugs.webkit.org/show_bug.cgi?id=145658</see_also>
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Brian Burg">burg</reporter>
          <assigned_to name="Brian Burg">burg</assigned_to>
          <cc>commit-queue</cc>
    
    <cc>darin</cc>
    
    <cc>graouts</cc>
    
    <cc>hi</cc>
    
    <cc>joepeck</cc>
    
    <cc>jonowells</cc>
    
    <cc>mattbaker</cc>
    
    <cc>nvasilyev</cc>
    
    <cc>timothy</cc>
    
    <cc>webkit-bug-importer</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>1102725</commentid>
    <comment_count>0</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-06-17 17:44:57 -0700</bug_when>
    <thetext>I believe this was introduced by https://bugs.webkit.org/show_bug.cgi?id=140053 which got rid of PassRefPtr in the protocol. It was a known issue, but I had to draw the line for that bug somewhere.

If we really have a non-null reference that is being &apos;borrowed&apos; then the generated type signature here should be const T&amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102744</commentid>
    <comment_count>1</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2015-06-17 18:30:58 -0700</bug_when>
    <thetext>If there was a good reason to use PassRefPtr before, the newfangled equivalent of PassRefPtr is RefPtr&amp;&amp;, not const RefPtr&amp;&amp;.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102813</commentid>
    <comment_count>2</comment_count>
      <attachid>255086</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-06-17 22:51:11 -0700</bug_when>
    <thetext>Created attachment 255086
WIP, need to get WebCore compiling</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1102815</commentid>
    <comment_count>3</comment_count>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-06-17 22:55:03 -0700</bug_when>
    <thetext>(In reply to comment #1)
&gt; If there was a good reason to use PassRefPtr before, the newfangled
&gt; equivalent of PassRefPtr is RefPtr&amp;&amp;, not const RefPtr&amp;&amp;.

I don&apos;t think there was ever a good reason to do refcounted objects here, since the backend agents should copy data out of these marshalled, untyped objects and not take ownership.

In the JS frontend we are a lot more careful to &quot;firewall&quot; the inspector app&apos;s data from the protocol layer by copying out data.

In the attached patch, the signatures change to const T&amp; (required param) and const T* (optional param). The objects are owned by the dispatcher implementations in the generated InspectorBackendDispatchers.cpp file.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103006</commentid>
    <comment_count>4</comment_count>
      <attachid>255126</attachid>
    <who name="Brian Burg">burg</who>
    <bug_when>2015-06-18 12:56:10 -0700</bug_when>
    <thetext>Created attachment 255126
Proposed Fix

JoePeck should take a look at this, and see what ObjC bindings stuff it broke. Should only require little fixes.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103010</commentid>
    <comment_count>5</comment_count>
    <who name="WebKit Commit Bot">commit-queue</who>
    <bug_when>2015-06-18 12:58:50 -0700</bug_when>
    <thetext>This patch modifies the inspector protocol generator. Please ensure that you have rebaselined any generator test results (i.e., by running `Tools/Scripts/run-inspector-generator-tests --reset-results`)</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103029</commentid>
    <comment_count>6</comment_count>
      <attachid>255130</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-06-18 14:01:23 -0700</bug_when>
    <thetext>Created attachment 255130
[PATCH] ObjC Diff

These are the pieces needed to update the ObjC generator. There will be an Internal piece needed to coordinate with these changes. I&apos;ll post a combined patch.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103031</commentid>
    <comment_count>7</comment_count>
      <attachid>255126</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-06-18 14:16:41 -0700</bug_when>
    <thetext>Comment on attachment 255126
Proposed Fix

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

r+, but I&apos;m going to post a combined patch / handle landing to coordinate with the internal side.

&gt; Source/WebCore/inspector/InspectorResourceAgent.cpp:304
&gt; +    

Nit: trailing whitespace.

&gt; Source/WebCore/inspector/InspectorResourceAgent.h:142
&gt; -    RefPtr&lt;Inspector::InspectorObject&gt; m_extraRequestHeaders;
&gt; +    HashMap&lt;String, String&gt; m_extraRequestHeaders;

Nice</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103032</commentid>
    <comment_count>8</comment_count>
      <attachid>255132</attachid>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-06-18 14:17:40 -0700</bug_when>
    <thetext>Created attachment 255132
[PATCH] For Landing</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>1103047</commentid>
    <comment_count>9</comment_count>
    <who name="Joseph Pecoraro">joepeck</who>
    <bug_when>2015-06-18 15:08:31 -0700</bug_when>
    <thetext>http://trac.webkit.org/changeset/185722</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255086</attachid>
            <date>2015-06-17 22:51:11 -0700</date>
            <delta_ts>2015-06-18 12:56:07 -0700</delta_ts>
            <desc>WIP, need to get WebCore compiling</desc>
            <filename>bug-146091-20150617225034.patch</filename>
            <type>text/plain</type>
            <size>23412</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NjgzCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBi
ODk4OTZlODZjZDM3MzYzYjUwNzZlODU2NGZkZGZkYTgxYWMwNjdkLi5iMzUyYTg5ZjA2ZTUyYmQw
NjkyYTRiYWQ0MWRiMjgzNTI5YjFjZWQ4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSwyOSBAQAorMjAxNS0wNi0xNyAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogZG9uJ3QgZ2VuZXJhdGUgcHJvdG9jb2wg
dHlwZSBjb25zdCBSZWZQdHI8VD4mJiBzaW5jZSBpdCBtYWtlcyBubyBzZW5zZQorICAgICAgICBo
dHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MDkxCisKKyAgICAgICAg
UmV2aWV3ZWQgYnkgTk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXlCYXNlOjpn
ZXQpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaDoKKyAgICAgICAgKiBp
bnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwpOgorICAg
ICAgICAoSW5zcGVjdG9yOjpwYXJzZUxvY2F0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludCk6CisgICAgICAgIChJbnNwZWN0b3I6
Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbik6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVj
dG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlvbk9uKToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpzYXZlUmVzdWx0KToKKyAgICAgICAgKElu
c3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJs
ZXNBdE9mZnNldHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGlt
ZUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJh
dG9yLnB5OgorICAgICAgICAoQ3BwR2VuZXJhdG9yLmNwcF90eXBlX2Zvcl91bmNoZWNrZWRfZm9y
bWFsX2luX3BhcmFtZXRlcik6CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5OgorICAgICAg
ICAoQ3BwQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVf
ZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbl9mb3JfY29tbWFuZCk6CisKIDIwMTUtMDYtMTcgIEpv
c2VwaCBQZWNvcmFybyAgPHBlY29yYXJvQGFwcGxlLmNvbT4KIAogICAgICAgICBXZWIgSW5zcGVj
dG9yOiBEbyBub3Qgc2hvdyBKYXZhU2NyaXB0Q29yZSBidWlsdGlucyBpbiBpbnNwZWN0b3IKZGlm
ZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZwppbmRleCBkYjc0MTBhZDc1N2Y3YTA2YmMyZDcyNzIyOTJiMWYxYWI2NDVmMmVmLi5mNTI4
MmQ3OWNkZTQyYTJkOWI4YTU2MmQ2NDM2ZjE4NWRiNTRmOGM5IDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCkBAIC0xLDMg
KzEsMTQgQEAKKzIwMTUtMDYtMTcgIEJyaWFuIEouIEJ1cmcgIDxidXJnQGNzLndhc2hpbmd0b24u
ZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGRvbid0IGdlbmVyYXRlIHByb3RvY29sIHR5
cGUgY29uc3QgUmVmUHRyPFQ+JiYgc2luY2UgaXQgbWFrZXMgbm8gc2Vuc2UKKyAgICAgICAgaHR0
cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjA5MQorCisgICAgICAgIFJl
dmlld2VkIGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIE5vIG5ldyB0ZXN0cyAoT09QUyEp
LgorCisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50Lmg6CisKIDIwMTUtMDYt
MTcgIEFsZXggQ2hyaXN0ZW5zZW4gIDxhY2hyaXN0ZW5zZW5Ad2Via2l0Lm9yZz4KIAogICAgICAg
ICBbQ29udGVudCBFeHRlbnNpb25zXSBGYWlsIHRvIHBhcnNlIGludmFsaWQgYXJyYXlzCmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5j
cHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAK
aW5kZXggNjUyMzI4MzViZmM1MWI0Y2Y0NjY1ODMxNzAwZjk5ZWQ4ZTdjZmI0Yi4uNTg5NmFkNmU2
ZDAyZjI2ZGJiMWFhZWQ5Y2FmMzUyOWM3M2ZhODQyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcApAQCAtODM5LDcgKzgzOSw3
IEBAIEluc3BlY3RvckFycmF5QmFzZTo6SW5zcGVjdG9yQXJyYXlCYXNlKCkKIHsKIH0KIAotUmVm
UHRyPEluc3BlY3RvclZhbHVlPiBJbnNwZWN0b3JBcnJheUJhc2U6OmdldChzaXplX3QgaW5kZXgp
CitSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IEluc3BlY3RvckFycmF5QmFzZTo6Z2V0KHNpemVfdCBp
bmRleCkgY29uc3QKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRl
eCA8IG1fZGF0YS5zaXplKCkpOwogICAgIHJldHVybiBtX2RhdGFbaW5kZXhdOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBiL1Nv
dXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKaW5kZXggYmFm
ZmNiMGI1YjNkY2Y3YTc3MjFjZTRkZTBlYWJlNGFiNDhmOTAzMC4uZGIwNTAzNmQwYzBkYzUyMzdh
NDZiNTg3MjgzY2Q2ZTYxMGI3MTVlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oCkBAIC0yNzksNyArMjc5LDcgQEAgcHJvdGVjdGVk
OgogICAgIHZvaWQgcHVzaE9iamVjdChSZWZQdHI8SW5zcGVjdG9yT2JqZWN0QmFzZT4mJik7CiAg
ICAgdm9pZCBwdXNoQXJyYXkoUmVmUHRyPEluc3BlY3RvckFycmF5QmFzZT4mJik7CiAKLSAgICBS
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+IGdldChzaXplX3QgaW5kZXgpOworICAgIFJlZlB0cjxJbnNw
ZWN0b3JWYWx1ZT4gZ2V0KHNpemVfdCBpbmRleCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQg
d3JpdGVKU09OKFN0cmluZ0J1aWxkZXImIG91dHB1dCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRl
YnVnZ2VyQWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggNTJhZDIxZmZkZGFhZDI1YjRmNTZmYTQ1
NDg1NTkzOTA5NzJiNDQ5YS4uYTc1ZTBiMmI2ZWM3ZThjOWRkZDY3N2ZmOTQ4NWM5ZThmZTlkYmU0
ZCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5z
cGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTI3NSw3ICsyNzUsNyBA
QCBib29sIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3Rv
Y29sKEVycm9yU3RyaW5nJiBlcnJvclN0cgogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIElu
c3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJM
LCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogY29uc3Qg
b3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgb3B0
aW9ucywgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCogb3V0QnJl
YWtwb2ludElkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNw
ZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+PiYgbG9jYXRpb25zKQordm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFVS
TCwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBpbnQqIGNvbnN0
IG9wdGlvbmFsQ29sdW1uTnVtYmVyLCBjb25zdCBJbnNwZWN0b3JPYmplY3QqIG9wdGlvbnMsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJ
ZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykKIHsKICAgICBsb2NhdGlv
bnMgPSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1
Z2dlcjo6TG9jYXRpb24+OjpjcmVhdGUoKTsKICAgICBpZiAoIW9wdGlvbmFsVVJMID09ICFvcHRp
b25hbFVSTFJlZ2V4KSB7CkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQg
bGkKICAgICAqb3V0QnJlYWtwb2ludElkZW50aWZpZXIgPSBicmVha3BvaW50SWRlbnRpZmllcjsK
IH0KIAotc3RhdGljIGJvb2wgcGFyc2VMb2NhdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IEluc3BlY3Rvck9iamVjdCYgbG9jYXRpb24sIEpTQzo6U291cmNlSUQmIHNvdXJjZUlELCB1bnNp
Z25lZCYgbGluZU51bWJlciwgdW5zaWduZWQmIGNvbHVtbk51bWJlcikKK3N0YXRpYyBib29sIHBh
cnNlTG9jYXRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBJbnNwZWN0b3JPYmpl
Y3QmIGxvY2F0aW9uLCBKU0M6OlNvdXJjZUlEJiBzb3VyY2VJRCwgdW5zaWduZWQmIGxpbmVOdW1i
ZXIsIHVuc2lnbmVkJiBjb2x1bW5OdW1iZXIpCiB7CiAgICAgU3RyaW5nIHNjcmlwdElEU3RyOwog
ICAgIGlmICghbG9jYXRpb24uZ2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2NyaXB0SWQiKSwgc2Ny
aXB0SURTdHIpIHx8ICFsb2NhdGlvbi5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgibGluZU51bWJl
ciIpLCBsaW5lTnVtYmVyKSkgewpAQCAtMzM2LDEyICszMzYsMTIgQEAgc3RhdGljIGJvb2wgcGFy
c2VMb2NhdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEluc3BlY3Rvck9iamVjdCYgbG9j
YXRpb24sIEoKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50OjpzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRy
PEluc3BlY3Rvck9iamVjdD4mJiBsb2NhdGlvbiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVj
dD4mJiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElk
KiBvdXRCcmVha3BvaW50SWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRl
YnVnZ2VyOjpMb2NhdGlvbj4mIGFjdHVhbExvY2F0aW9uKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dl
ckFnZW50OjpzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSW5z
cGVjdG9yT2JqZWN0JiBsb2NhdGlvbiwgY29uc3QgSW5zcGVjdG9yT2JqZWN0KiBvcHRpb25zLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRCcmVha3BvaW50
SWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlv
bj4mIGFjdHVhbExvY2F0aW9uKQogewogICAgIEpTQzo6U291cmNlSUQgc291cmNlSUQ7CiAgICAg
dW5zaWduZWQgbGluZU51bWJlcjsKICAgICB1bnNpZ25lZCBjb2x1bW5OdW1iZXI7Ci0gICAgaWYg
KCFwYXJzZUxvY2F0aW9uKGVycm9yU3RyaW5nLCAqbG9jYXRpb24sIHNvdXJjZUlELCBsaW5lTnVt
YmVyLCBjb2x1bW5OdW1iZXIpKQorICAgIGlmICghcGFyc2VMb2NhdGlvbihlcnJvclN0cmluZywg
bG9jYXRpb24sIHNvdXJjZUlELCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpKQogICAgICAgICBy
ZXR1cm47CiAKICAgICBTdHJpbmcgY29uZGl0aW9uID0gZW1wdHlTdHJpbmcoKTsKQEAgLTM4OCw3
ICszODgsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlbW92ZUJyZWFrcG9pbnQo
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyZWFrcAogICAgIH0KIH0KIAotdm9pZCBJbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGxvY2F0aW9uKQordm9pZCBJ
bnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIGxvY2F0aW9uKQogewogICAgIGlmICht
X2NvbnRpbnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRCAhPSBKU0M6Om5vQnJlYWtwb2ludElEKSB7
CiAgICAgICAgIHNjcmlwdERlYnVnU2VydmVyKCkucmVtb3ZlQnJlYWtwb2ludChtX2NvbnRpbnVl
VG9Mb2NhdGlvbkJyZWFrcG9pbnRJRCk7CkBAIC0zOTgsNyArMzk4LDcgQEAgdm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdAogICAgIEpTQzo6U291cmNlSUQgc291cmNlSUQ7CiAgICAgdW5zaWduZWQgbGlu
ZU51bWJlcjsKICAgICB1bnNpZ25lZCBjb2x1bW5OdW1iZXI7Ci0gICAgaWYgKCFwYXJzZUxvY2F0
aW9uKGVycm9yU3RyaW5nLCAqbG9jYXRpb24sIHNvdXJjZUlELCBsaW5lTnVtYmVyLCBjb2x1bW5O
dW1iZXIpKQorICAgIGlmICghcGFyc2VMb2NhdGlvbihlcnJvclN0cmluZywgbG9jYXRpb24sIHNv
dXJjZUlELCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpKQogICAgICAgICByZXR1cm47CiAKICAg
ICBTY3JpcHRCcmVha3BvaW50IGJyZWFrcG9pbnQobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCAi
IiwgZmFsc2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2lu
c3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IDc5NDg2NDAyZmI3
ZjVjMmMwMzI5NTAwZGRkOWFlODA4Mjg1NDlhNTAuLjI4MjQ5ZTI3NjJkMDRmMmYxNzM0NjM0MWQ3
ZjRhZTYwMjU1ZTIwNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTcxLDEw
ICs3MSwxMCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJp
ZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldEJyZWFrcG9pbnRzQWN0aXZlKEVycm9yU3RyaW5nJiwg
Ym9vbCBhY3RpdmUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50QnlV
cmwoRXJyb3JTdHJpbmcmLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVS
TCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBpbnQqIG9wdGlvbmFsQ29s
dW1uTnVtYmVyLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgb3B0
aW9ucywgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dl
cjo6TG9jYXRpb24+PiYgbG9jYXRpb25zKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0
QnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4mJiBsb2NhdGlvbiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiYmIG9wdGlvbnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50
SWQqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPiYgYWN0
dWFsTG9jYXRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50QnlV
cmwoRXJyb3JTdHJpbmcmLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVS
TCwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBpbnQqIG9wdGlvbmFsQ29s
dW1uTnVtYmVyLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogb3B0aW9ucywgSW5z
cGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRp
b24+PiYgbG9jYXRpb25zKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtwb2lu
dChFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBsb2NhdGlv
biwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG9wdGlvbnMsIEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPiYgYWN0dWFsTG9jYXRpb24pIG92ZXJyaWRlOwogICAg
IHZpcnR1YWwgdm9pZCByZW1vdmVCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBicmVha3BvaW50SWRlbnRpZmllcikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRp
bnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiYgbG9jYXRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZVRvTG9jYXRp
b24oRXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIGxvY2F0aW9uKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgc2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBzY3JpcHRJRCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0aW9u
YWxDYXNlU2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6
OlNlYXJjaE1hdGNoPj4mKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U2NyaXB0U291
cmNlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgU3RyaW5nKiBzY3JpcHRT
b3VyY2UpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBnZXRGdW5jdGlvbkRldGFpbHMoRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGlt
ZUFnZW50LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5jcHAKaW5kZXggZmFhMmRkYjlkODFkYzdiNGY0MDVjNjNmYmI1MjBk
MDU4NWIyNmZhZi4uZTNlYzg2MjNjODQ0YTgxNTQ2MDExZTM5YmJlMmM2YTBhZGE3MTk5NiAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
UnVudGltZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2Fn
ZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBJ
bnNwZWN0b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QgU3RyaW5nJiBleHAKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50
OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYg
b2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ckFycmF5PiYmIG9wdGlvbmFsQXJndW1lbnRzLCBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNl
T25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFs
dWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6
Y2FsbEZ1bmN0aW9uT24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9i
amVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IEluc3BlY3RvckFycmF5KiBv
cHRpb25hbEFyZ3VtZW50cywgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9u
c0FuZE11dGVDb25zb2xlLCBjb25zdCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBi
b29sKiBnZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1l
OjpSZW1vdGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxi
b29sPiogd2FzVGhyb3duKQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0g
bV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0
SWQpOwogICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKQEAgLTIxMCwxMiAr
MjEwLDEyIEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRDb2xsZWN0aW9uRW50cmll
cyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0
Q29sbGVjdGlvbkVudHJpZXMoZXJyb3JTdHJpbmcsIG9iamVjdElkLCBvYmplY3RHcm91cCA/ICpv
YmplY3RHcm91cCA6IFN0cmluZygpLCBzdGFydCwgZmV0Y2gsICZlbnRyaWVzKTsKIH0KIAotdm9p
ZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgY2FsbEFyZ3Vt
ZW50LCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PGludD4qIHNhdmVkUmVzdWx0SW5kZXgpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVB
Z2VudDo6c2F2ZVJlc3VsdChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0JiBjYWxsQXJndW1lbnQsIGNvbnN0IGludCogZXhlY3V0aW9uQ29u
dGV4dElkLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogc2F2ZWRSZXN1bHRJ
bmRleCkKIHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdDsKIAogICAgIFN0cmlu
ZyBvYmplY3RJZDsKLSAgICBpZiAoY2FsbEFyZ3VtZW50LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFs
KCJvYmplY3RJZCIpLCBvYmplY3RJZCkpIHsKKyAgICBpZiAoY2FsbEFyZ3VtZW50LmdldFN0cmlu
ZyhBU0NJSUxpdGVyYWwoIm9iamVjdElkIiksIG9iamVjdElkKSkgewogICAgICAgICBpbmplY3Rl
ZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVj
dElkKG9iamVjdElkKTsKICAgICAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkg
ewogICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkluc3BlY3RlZCBmcmFt
ZSBoYXMgZ29uZSIpOwpAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFn
ZW50OjpzYXZlUmVzdWx0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPElu
CiAgICAgICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaW5qZWN0ZWRTY3JpcHQuc2F2ZVJl
c3VsdChlcnJvclN0cmluZywgY2FsbEFyZ3VtZW50LT50b0pTT05TdHJpbmcoKSwgc2F2ZWRSZXN1
bHRJbmRleCk7CisgICAgaW5qZWN0ZWRTY3JpcHQuc2F2ZVJlc3VsdChlcnJvclN0cmluZywgY2Fs
bEFyZ3VtZW50LnRvSlNPTlN0cmluZygpLCBzYXZlZFJlc3VsdEluZGV4KTsKIH0KIAogdm9pZCBJ
bnNwZWN0b3JSdW50aW1lQWdlbnQ6OnJlbGVhc2VPYmplY3QoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIG9iamVjdElkKQpAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGlt
ZUFnZW50OjpydW4oRXJyb3JTdHJpbmcmKQogICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQu
b3JnL2IvMTI3NjM0PiBXZWIgSW5zcGVjdG9yOiBzdXBwb3J0IGRlYnVnZ2luZyB3ZWIgd29ya2Vy
cwogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5cGVzRm9yVmFy
aWFibGVzQXRPZmZzZXRzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgbG9jYXRpb25zLCBSZWZQdHI8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0
aW9uPj4mIHR5cGVEZXNjcmlwdGlvbnMpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0
UnVudGltZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYgbG9jYXRpb25zLCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6VHlw
ZURlc2NyaXB0aW9uPj4mIHR5cGVEZXNjcmlwdGlvbnMpCiB7CiAgICAgc3RhdGljIGNvbnN0IGJv
b2wgdmVyYm9zZSA9IGZhbHNlOwogICAgIFZNJiB2bSA9IGdsb2JhbFZNKCk7CkBAIC0yNjAsOCAr
MjYwLDggQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFJ1bnRpbWVUeXBlc0ZvclZh
cmlhYmxlc0F0T2Zmc2V0cyhFcnJvclN0cmluZyYgZXIKICAgICBkb3VibGUgc3RhcnQgPSBjdXJy
ZW50VGltZU1TKCk7CiAgICAgdm0udHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVz
KEFTQ0lJTGl0ZXJhbCgiVXNlciBRdWVyeSIpKTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBp
IDwgbG9jYXRpb25zLT5sZW5ndGgoKTsgaSsrKSB7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3RvclZhbHVlPiB2YWx1ZSA9IGxvY2F0aW9ucy0+Z2V0KGkpOworICAgIGZvciAoc2l6
ZV90IGkgPSAwOyBpIDwgbG9jYXRpb25zLmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHZhbHVlID0gbG9jYXRpb25zLmdldChpKTsKICAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbG9jYXRpb247CiAgICAgICAgIGlmICghdmFs
dWUtPmFzT2JqZWN0KGxvY2F0aW9uKSkgewogICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJ
SUxpdGVyYWwoIkFycmF5IG9mIFR5cGVMb2NhdGlvbiBvYmplY3RzIGhhcyBhbiBvYmplY3QgdGhh
dCBkb2VzIG5vdCBoYXZlIHR5cGUgb2YgVHlwZUxvY2F0aW9uLiIpOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50
LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuaAppbmRleCBiZjA1ZGRjYTQzZDhhOTZiNmQ2Y2Y4NDcxOGY2NDFjOTNmNjQzNjFm
Li4yNWYzZDdjMTRhYWNjMDU1NzI0MGI3YjE3NmJjZjNjM2M1YTliMjEzIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdl
bnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JSdW50aW1lQWdlbnQuaApAQCAtNjEsMTUgKzYxLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlIHsgbV9lbmFibGVkID0gZmFsc2U7
IH0KICAgICB2aXJ0dWFsIHZvaWQgcGFyc2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGV4
cHJlc3Npb24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZSog
cmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogbWVzc2FnZSwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+Jikgb3ZlcnJp
ZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGV2YWx1YXRlKEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBib29s
KiBpbmNsdWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlv
bnNBbmRNdXRlQ29uc29sZSwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQsIGNvbnN0IGJv
b2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgY29uc3QgYm9v
bCogc2F2ZVJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90
ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3
YXNUaHJvd24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBzYXZlZFJlc3Vs
dEluZGV4KSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgY2FsbEZ1bmN0aW9uT24o
RXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJl
c3Npb24sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIG9wdGlvbmFs
QXJndW1lbnRzLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNv
bGUsIGNvbnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmll
dywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJl
c3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pIG92
ZXJyaWRlIGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBjYWxsRnVuY3Rpb25PbihFcnJvclN0cmlu
ZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29u
c3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSogb3B0aW9uYWxBcmd1bWVudHMsIGNvbnN0IGJv
b2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogcmV0
dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikgb3ZlcnJpZGUgZmluYWw7CiAgICAg
dmlydHVhbCB2b2lkIHJlbGVhc2VPYmplY3QoRXJyb3JTdHJpbmcmLCBjb25zdCBFcnJvclN0cmlu
ZyYgb2JqZWN0SWQpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0
aWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogb3du
UHJvcGVydGllcywgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlE
ZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4m
IGludGVybmFsUHJvcGVydGllcykgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGdl
dERpc3BsYXlhYmxlUHJvcGVydGllcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0
SWQsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRv
cj4+JiByZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5h
bFByb3BlcnRpZXMpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBnZXRDb2xsZWN0
aW9uRW50cmllcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0
cmluZyogb2JqZWN0R3JvdXAsIGNvbnN0IGludCogc3RhcnRJbmRleCwgY29uc3QgaW50KiBudW1i
ZXJUb0ZldGNoLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQ
cm90b2NvbDo6UnVudGltZTo6Q29sbGVjdGlvbkVudHJ5Pj4mIGVudHJpZXMpIG92ZXJyaWRlIGZp
bmFsOwotICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVzdWx0KEVycm9yU3RyaW5nJiwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGNhbGxBcmd1bWVudCwgY29uc3QgaW50
KiBleGVjdXRpb25Db250ZXh0SWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+
KiBzYXZlZFJlc3VsdEluZGV4KSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2
ZVJlc3VsdChFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBj
YWxsQXJndW1lbnQsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkLCBJbnNwZWN0b3I6OlBy
b3RvY29sOjpPcHRPdXRwdXQ8aW50Piogc2F2ZWRSZXN1bHRJbmRleCkgb3ZlcnJpZGUgZmluYWw7
CiAgICAgdmlydHVhbCB2b2lkIHJlbGVhc2VPYmplY3RHcm91cChFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYgb2JqZWN0R3JvdXApIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBy
dW4oRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UnVudGltZVR5
cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzKEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgbG9jYXRpb25zLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9u
Pj4mKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UnVudGltZVR5cGVzRm9yVmFyaWFi
bGVzQXRPZmZzZXRzKEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJh
eSYgbG9jYXRpb25zLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4mKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgZW5hYmxlVHlwZVByb2ZpbGVyKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGRpc2FibGVUeXBlUHJvZmlsZXIoRXJyb3JTdHJpbmcmKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0QmFzaWNCbG9ja3MoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIGluX3NvdXJjZUlELCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6QmFzaWNCbG9jaz4+JiBvdXRfYmFzaWNCbG9ja3Mp
IG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3IucHkKaW5kZXggZGY5MGJlOTJk
NWI0ZjUzNGFlZjBjM2UwNmZlY2FmNTMxOTVkNjNmYi4uZWRkMzMwZGE0OGQwMWEzMjUwOTYzZmQw
MWRlMmI5ODQxMGQ5MTBiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvci5weQorKysgYi9Tb3VyY2UvSmF2YVNj
cmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5CkBAIC0z
OSw2ICszOSw3IEBAIF9QUklNSVRJVkVfVE9fQ1BQX05BTUVfTUFQID0gewogICAgICdudW1iZXIn
OiAnZG91YmxlJywKICAgICAnc3RyaW5nJzogJ1N0cmluZycsCiAgICAgJ29iamVjdCc6ICdJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdCcsCisgICAgJ2FycmF5JzogJ0luc3BlY3Rvcjo6SW5zcGVj
dG9yQXJyYXknLAogICAgICdhbnknOiAnSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZScKIH0KIApA
QCAtMTE5LDkgKzEyMCwxNyBAQCBjbGFzcyBDcHBHZW5lcmF0b3I6CiAKICAgICAgICAgIyBUaGlz
IGhhbmRsZXMgdGhlICdhbnknIHR5cGUgYW5kIG9iamVjdHMgd2l0aCBkZWZpbmVkIHByb3BlcnRp
ZXMuCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIE9iamVjdFR5cGUpIG9yIF90eXBlLnF1
YWxpZmllZF9uYW1lKCkgaXMgJ29iamVjdCc6Ci0gICAgICAgICAgICByZXR1cm4gJ2NvbnN0IFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJicKKyAgICAgICAgICAgIGNwcF9uYW1l
ID0gJ0luc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JworICAgICAgICAgICAgaWYgcGFyYW1ldGVy
LmlzX29wdGlvbmFsOgorICAgICAgICAgICAgICAgIHJldHVybiAnY29uc3QgJXMqJyAlIGNwcF9u
YW1lCisgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiAnY29uc3QgJXMm
JyAlIGNwcF9uYW1lCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIEFycmF5VHlwZSk6Ci0g
ICAgICAgICAgICByZXR1cm4gJ2NvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5
PiYmJworICAgICAgICAgICAgY3BwX25hbWUgPSAnSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheScK
KyAgICAgICAgICAgIGlmIHBhcmFtZXRlci5pc19vcHRpb25hbDoKKyAgICAgICAgICAgICAgICBy
ZXR1cm4gJ2NvbnN0ICVzKicgJSBjcHBfbmFtZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICByZXR1cm4gJ2NvbnN0ICVzJicgJSBjcHBfbmFtZQogICAgICAgICBpZiBpc2luc3Rh
bmNlKF90eXBlLCBQcmltaXRpdmVUeXBlKToKICAgICAgICAgICAgIGNwcF9uYW1lID0gQ3BwR2Vu
ZXJhdG9yLmNwcF9uYW1lX2Zvcl9wcmltaXRpdmVfdHlwZShfdHlwZSkKICAgICAgICAgICAgIGlm
IHBhcmFtZXRlci5pc19vcHRpb25hbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29y
ZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNo
ZXJfaW1wbGVtZW50YXRpb24ucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Nj
cmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0
aW9uLnB5CmluZGV4IGRjZDY2NGE3MDY5N2Y2NWQ4MjhmODEzN2UyZjhhNTVmMmU1MjQzYzQuLjNj
OTIzODA4OWUwYTZiZWRmMGUwZmFiODdkNDAzODVmYTQ4ZDY1YjEgMTAwNzU1Ci0tLSBhL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9i
YWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKKysrIGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlz
cGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQpAQCAtMTgwLDcgKzE4MCwxNCBAQCBjbGFzcyBDcHBC
YWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAKICAg
ICAgICAgICAgIHBhcmFtZXRlcl9leHByZXNzaW9uID0gJ2luXycgKyBwYXJhbWV0ZXIucGFyYW1l
dGVyX25hbWUKICAgICAgICAgICAgIGlmIENwcEdlbmVyYXRvci5zaG91bGRfdXNlX3JlZmVyZW5j
ZXNfZm9yX3R5cGUocGFyYW1ldGVyLnR5cGUpOgotICAgICAgICAgICAgICAgIHBhcmFtZXRlcl9l
eHByZXNzaW9uID0gJyVzLmNvcHlSZWYoKScgJSBwYXJhbWV0ZXJfZXhwcmVzc2lvbgorICAgICAg
ICAgICAgICAgIGlmIHBhcmFtZXRlci5pc19vcHRpb25hbDoKKyAgICAgICAgICAgICAgICAgICAg
cGFyYW1ldGVyX2V4cHJlc3Npb24gPSAnJXMuZ2V0KCknICUgcGFyYW1ldGVyX2V4cHJlc3Npb24K
KyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgICAgICAjIFRoaXMgYXNzdW1l
cyB0aGF0IHdlIGhhdmUgYWxyZWFkeSBwcm92ZWQgdGhlIG9iamVjdCBpcyBub24tbnVsbC4KKyAg
ICAgICAgICAgICAgICAgICAgIyBJZiBhIHJlcXVpcmVkIHByb3BlcnR5IGlzIG1pc3NpbmcsIElu
c3BlY3RvckJhY2tlbmQ6OmdldE9iamVjdCB3aWxsCisgICAgICAgICAgICAgICAgICAgICMgYXBw
ZW5kIGEgcHJvdG9jb2wgZXJyb3IsIGFuZCB0aGUgbWV0aG9kIGRpc3BhdGNoZXIgd2lsbCByZXR1
cm4gd2l0aG91dAorICAgICAgICAgICAgICAgICAgICAjIGludm9raW5nIHRoZSBiYWNrZW5kIG1l
dGhvZCAoYW5kIGRlcmVmZXJlbmNpbmcgdGhlIG9iamVjdCkuCisgICAgICAgICAgICAgICAgICAg
IHBhcmFtZXRlcl9leHByZXNzaW9uID0gJyolcycgJSBwYXJhbWV0ZXJfZXhwcmVzc2lvbgogICAg
ICAgICAgICAgZWxpZiBwYXJhbWV0ZXIuaXNfb3B0aW9uYWw6CiAgICAgICAgICAgICAgICAgcGFy
YW1ldGVyX2V4cHJlc3Npb24gPSAnJiVzJyAlIHBhcmFtZXRlcl9leHByZXNzaW9uCiAKZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXggOWZjOTUyNWRi
N2NmYzQyNWZhZTlmMTM5YjlmZGU3YjE3OWFhNmZhYi4uY2IwMGYyYzA4ZTQ3YTIyODY5Mzg3MjNj
YzUxMjRkYTQ2OTNkMjBiNSAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmgKQEAgLTEzMCw3ICsxMzAsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lk
IHNldE5vZGVWYWx1ZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyYgdmFs
dWUpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBnZXRFdmVudExpc3RlbmVyc0Zvck5vZGUo
RXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlkLCBjb25zdCBXVEY6OlN0cmluZyogb2JqZWN0R3JvdXAs
IFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpE
T006OkV2ZW50TGlzdGVuZXI+PiYgbGlzdGVuZXJzQXJyYXkpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBnZXRBY2Nlc3NpYmlsaXR5UHJvcGVydGllc0Zvck5vZGUoRXJyb3JTdHJpbmcmLCBp
bnQgbm9kZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RE9NOjpBY2Nlc3NpYmlsaXR5
UHJvcGVydGllcz4mIGF4UHJvcGVydGllcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHBl
cmZvcm1TZWFyY2goRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltbWVk
UXVlcnksIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIG5vZGVJZHMs
IFN0cmluZyogc2VhcmNoSWQsIGludCogcmVzdWx0Q291bnQpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBwZXJmb3JtU2VhcmNoKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiB3aGl0ZXNw
YWNlVHJpbW1lZFF1ZXJ5LCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5KiBub2RlSWRz
LCBTdHJpbmcqIHNlYXJjaElkLCBpbnQqIHJlc3VsdENvdW50KSBvdmVycmlkZTsKICAgICB2aXJ0
dWFsIHZvaWQgZ2V0U2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc2Vh
cmNoSWQsIGludCBmcm9tSW5kZXgsIGludCB0b0luZGV4LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8aW50Pj4mKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzY2FyZFNl
YXJjaFJlc3VsdHMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHNlYXJjaElkKSBvdmVycmlk
ZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVzb2x2ZU5vZGUoRXJyb3JTdHJpbmcmLCBpbnQgbm9kZUlk
LCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0KSBvdmVycmlkZTsK
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255126</attachid>
            <date>2015-06-18 12:56:10 -0700</date>
            <delta_ts>2015-06-18 14:17:40 -0700</delta_ts>
            <desc>Proposed Fix</desc>
            <filename>bug-146091-20150618125533.patch</filename>
            <type>text/plain</type>
            <size>94553</size>
            <attacher name="Brian Burg">burg</attacher>
            
              <data encoding="base64">U3VidmVyc2lvbiBSZXZpc2lvbjogMTg1NzAwCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlw
dENvcmUvQ2hhbmdlTG9nIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL0NoYW5nZUxvZwppbmRleCBk
ZTI1MDZjNzNkNmU2ZmQ1M2MzYTIzYzE4OGQ4MGQ4NWI3OGM5NWYyLi5kMjQ0NWQyNDU1ODlmZTYw
ODg5YTAzNzJmMDM4NzdmZDdiNTUwZDc4IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvQ2hhbmdlTG9nCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKQEAgLTEs
MyArMSw1MSBAQAorMjAxNS0wNi0xOCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rv
bi5lZHU+CisKKyAgICAgICAgV2ViIEluc3BlY3RvcjogaW1wcm92ZSBnZW5lcmF0ZWQgdHlwZXMg
Zm9yIG9iamVjdHMgcGFzc2VkIHRvIGJhY2tlbmQgY29tbWFuZHMKKyAgICAgICAgaHR0cHM6Ly9i
dWdzLndlYmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTE0NjA5MQorCisgICAgICAgIFJldmlld2Vk
IGJ5IE5PQk9EWSAoT09QUyEpLgorCisgICAgICAgIFRoZSBtYWluIGNoYW5nZSBpcyB0aGF0IG9i
amVjdHMgcGFzc2VkIGluIHdpbGwgaGF2ZSBhIHR5cGUgbGlrZSBjb25zdCBUJiBvciBjb25zdCBU
KiwKKyAgICAgICAgcmF0aGVyIHRoYW4gY29uc3QgUmVmUHRyPFQ+JiYuIFRoZXNlIHByb3RvY29s
IG9iamVjdHMgYXJlIG93bmVkIGJ5IHRoZSBnZW5lcmF0ZWQgZGlzcGF0Y2hlcgorICAgICAgICBt
ZXRob2RzIGFuZCBvbmx5IGV4aXN0IHRvIHBhc3MgZGF0YSB0byBiYWNrZW5kIGNvbW1hbmQgaW1w
bGVtZW50YXRpb25zLiBTbywgdGhlcmUgaXMgbm8KKyAgICAgICAgcmVhc29uIGZvciBjYWxsZWVz
IHRvIGFkZCBhIHJlZmVyZW5jZSBvciB0YWtlIG93bmVyc2hpcCBvZiB0aGVzZSBpbnB1dHMuCisK
KyAgICAgICAgU29tZSBzbWFsbCBpbXByb3ZlbWVudHMgd2VyZSBtYWRlIGluIHRoZSBjb2RlIGdl
bmVyYXRvciB0byBzdGFuZGFyZGl6ZSBob3cgdGhlc2UKKyAgICAgICAgZXhwcmVzc2lvbnMgYXJl
IGdlbmVyYXRlZCBmb3IgcGFyYW1ldGVycy4gT3B0aW9uYWwgaW4gcGFyYW1ldGVycyBhcmUgbm93
IHByZWZpeGVkIHdpdGgKKyAgICAgICAgJ29wdF9pbl8nIHRvIG1ha2UgdGhlIGdlbmVyYXRlZCBt
ZXRob2Qgc2lnbmF0dXJlcyBhbmQgaW1wbGVtZW50YXRpb25zIGNsZWFyZXIuCisKKyAgICAgICAg
KiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcDoKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5z
cGVjdG9yQXJyYXlCYXNlOjpnZXQpOiBBZGQgY29uc3QgcXVhbGlmaWVyLgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwpOgorICAgICAgICAoSW5zcGVjdG9yOjpw
YXJzZUxvY2F0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yRGVidWdnZXJBZ2Vu
dDo6c2V0QnJlYWtwb2ludCk6CisgICAgICAgIChJbnNwZWN0b3I6Okluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbik6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoSW5zcGVjdG9yOjpJbnNwZWN0b3JSdW50
aW1lQWdlbnQ6OmNhbGxGdW5jdGlvbk9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9y
UnVudGltZUFnZW50OjpzYXZlUmVzdWx0KToKKyAgICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9y
UnVudGltZUFnZW50OjpnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMpOgorICAg
ICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50Lmg6CisKKyAgICAg
ICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3IucHk6IEFsd2F5cyBn
ZW5lcmF0ZSBQcmltaXRpdmVUeXBlKCdhcnJheScpLgorICAgICAgICAoQ3BwR2VuZXJhdG9yLmNw
cF90eXBlX2Zvcl91bmNoZWNrZWRfZm9ybWFsX2luX3BhcmFtZXRlcik6IEFsdGVyIHRoZSB0eXBl
IHNpZ25hdHVyZQorICAgICAgICBmb3IgYW4gdW5jaGVja2VkIGlucHV0IHRvIHVzZSBwb2ludGVy
cyBvciByZWZlcmVuY2VzLgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9n
ZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weToKKyAgICAgICAgKENwcEJh
Y2tlbmREaXNwYXRjaGVySGVhZGVyR2VuZXJhdG9yLl9nZW5lcmF0ZV9oYW5kbGVyX2RlY2xhcmF0
aW9uX2Zvcl9jb21tYW5kKToKKyAgICAgICAgKENwcEJhY2tlbmREaXNwYXRjaGVySGVhZGVyR2Vu
ZXJhdG9yLl9nZW5lcmF0ZV9hc3luY19oYW5kbGVyX2RlY2xhcmF0aW9uX2Zvcl9jb21tYW5kKToK
KyAgICAgICAgTG9jYWwgdmFyaWFibGVzIGZvciBvcHRpb25hbCBwYXJhbWV0ZXJzIG5vdyBoYXZl
IHRoZSAnb3B0XycgcHJlZml4LgorCisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdl
bi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5OgorICAg
ICAgICAoQ3BwQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvci5fZ2VuZXJh
dGVfYXN5bmNfZGlzcGF0Y2hlcl9jbGFzc19mb3JfZG9tYWluKToKKyAgICAgICAgKENwcEJhY2tl
bmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IuX2dlbmVyYXRlX2Rpc3BhdGNoZXJf
aW1wbGVtZW50YXRpb25fZm9yX2NvbW1hbmQpOgorICAgICAgICBMb2NhbCB2YXJpYWJsZXMgZm9y
IG9wdGlvbmFsIHBhcmFtZXRlcnMgbm93IGhhdmUgdGhlICdvcHRfJyBwcmVmaXguCisgICAgICAg
IFNwbGl0IHBhcmFtZXRlck5hbWUgYW5kIHBhcmFtZXRlcktleSBpbnRvIHR3byBzZXBhcmF0ZSB0
ZW1wbGF0ZSB2YXJpYWJsZXMgdG8gYXZvaWQgbWl4dXBzLgorCisgICAgICAgICogaW5zcGVjdG9y
L3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVy
bi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorCiAyMDE1LTA2LTE4ICBTYWFtIEJhcmF0aSAgPHNh
YW1iYXJhdGkxQGdtYWlsLmNvbT4KIAogICAgICAgICBbRVM2XSBzdXBwb3J0IGRlZmF1bHQgdmFs
dWVzIGluIGRlY29uc3RydWN0aW9uIHBhcmFtZXRlciBub2RlcwpkaWZmIC0tZ2l0IGEvU291cmNl
L1dlYkNvcmUvQ2hhbmdlTG9nIGIvU291cmNlL1dlYkNvcmUvQ2hhbmdlTG9nCmluZGV4IDIzYjYw
MzRjMzJiOGMxNjg1YjM1NTJlNTI0NzU1M2ZlZTE0NjA3OGYuLmI2MjIyYTAwMjBhNjgzOTI5ZWEx
YTY1YWNlZjlmMGEzNDQ3YmRkZjIgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxv
ZworKysgYi9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKQEAgLTEsMyArMSw2MiBAQAorMjAxNS0w
Ni0xOCAgQnJpYW4gSi4gQnVyZyAgPGJ1cmdAY3Mud2FzaGluZ3Rvbi5lZHU+CisKKyAgICAgICAg
V2ViIEluc3BlY3RvcjogaW1wcm92ZSBnZW5lcmF0ZWQgdHlwZXMgZm9yIG9iamVjdHMgcGFzc2Vk
IHRvIGJhY2tlbmQgY29tbWFuZHMKKyAgICAgICAgaHR0cHM6Ly9idWdzLndlYmtpdC5vcmcvc2hv
d19idWcuY2dpP2lkPTE0NjA5MQorCisgICAgICAgIFJldmlld2VkIGJ5IE5PQk9EWSAoT09QUyEp
LgorCisgICAgICAgIFVwZGF0ZSB0eXBlIHNpZ25hdHVyZXMgZm9yIGJhY2tlbmQgY29tbWFuZCBp
bXBsZW1lbnRhdGlvbnMuIEluIGEgZmV3IGNhc2VzLCBjbGVhbgorICAgICAgICB1cCByZWxldmFu
dCBoZWxwZXIgZnVuY3Rpb24gc2lnbmF0dXJlcyBhbmQgY29weSBkYXRhIG91dCBvZiBwYXJhbWV0
ZXIgb2JqZWN0cyB3aGVyZQorICAgICAgICB0aGUgY29kZSBwcmV2aW91c2x5IGhlbGQgb250byBh
IHJlZmVyZW5jZS4KKworICAgICAgICBObyBuZXcgdGVzdHMsIG5vIGJlaGF2aW9yIGNoYW5nZWQu
CisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwOgorICAgICAgICAo
V2ViQ29yZTo6Y29tcHV0ZVBzZXVkb0NsYXNzTWFzayk6CisgICAgICAgIChXZWJDb3JlOjpJbnNw
ZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVUZXh0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rv
ckNTU0FnZW50OjpzZXRSdWxlU2VsZWN0b3IpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9y
Q1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUpOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0
b3JDU1NBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHA6
CisgICAgICAgIChXZWJDb3JlOjpwYXJzZUNvbG9yKToKKyAgICAgICAgKFdlYkNvcmU6OnBhcnNl
Q29uZmlnQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VRdWFkKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpwZXJmb3JtU2VhcmNoKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRTZWFyY2hpbmdGb3JOb2RlKToKKyAgICAgICAgKFdl
YkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2Jq
ZWN0KToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTUFnZW50OjpzZXRJbnNwZWN0TW9k
ZUVuYWJsZWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdo
dFJlY3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFF1
YWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVySGlnaGxpZ2h0
UXVhZCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9k
ZSk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0RnJhbWUp
OgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oOgorICAgICAgICAqIGlu
c3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdlSXRlbXMpOgorICAgICAgICAo
V2ViQ29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpzZXRET01TdG9yYWdlSXRlbSk6Cisg
ICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnJlbW92ZURPTVN0b3Jh
Z2VJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6Zmlu
ZFN0b3JhZ2VBcmVhKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YSk6
CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvclJlcGxheUFnZW50OjpyZXBsYXlUb1Bvc2l0aW9uKToKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yUmVzb3VyY2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJj
ZUFnZW50Ojp3aWxsU2VuZFJlcXVlc3QpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVz
b3VyY2VBZ2VudDo6c2V0RXh0cmFIVFRQSGVhZGVycyk6CisgICAgICAgIENsZWFuIHVwIGV4dHJh
SFRUUEhlYWRlcnMgdG8gY29weSBoZWFkZXIga2V5L3ZhbHVlcyBvdXQgb2YgdGhlIEluc3BlY3Rv
ck9iamVjdCwgcmF0aGVyCisgICAgICAgIHRoYW4gcmV0YWluaW5nIHRoZSBwcm90b2NvbCBvYmpl
Y3QgaW5kZWZpbml0ZWx5LiBUaGlzIG1hdGNoZXMgdGhlIG93bmVyc2hpcCBzY2hlbWUgdXNlZAor
ICAgICAgICBldmVyeXdoZXJlIGVsc2UuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0
Lmg6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NJZDo6SW5zcGVjdG9yQ1NTSWQpOgor
ICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JXb3JrZXJBZ2VudDo6c2VuZE1lc3NhZ2VUb1dvcmtlcik6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50Lmg6CisKIDIwMTUtMDYtMTggIFlv
dWVubiBGYWJsZXQgPHlvdWVubi5mYWJsZXRAY3JmLmNhbm9uLmZyPiBhbmQgWGFiaWVyIFJvZHJp
Z3VleiBDYWx2YXIgIDxjYWx2YXJpc0BpZ2FsaWEuY29tPgogCiAgICAgICAgIFtTdHJlYW1zIEFQ
SV0gSW1wbGVtZW50IFJlYWRhYmxlU3RyZWFtUmVhZGVyLnJlbGVhc2VMb2NrCmRpZmYgLS1naXQg
YS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAgYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKaW5kZXgg
NjUyMzI4MzViZmM1MWI0Y2Y0NjY1ODMxNzAwZjk5ZWQ4ZTdjZmI0Yi4uNTg5NmFkNmU2ZDAyZjI2
ZGJiMWFhZWQ5Y2FmMzUyOWM3M2ZhODQyNSAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcApAQCAtODM5LDcgKzgzOSw3IEBAIElu
c3BlY3RvckFycmF5QmFzZTo6SW5zcGVjdG9yQXJyYXlCYXNlKCkKIHsKIH0KIAotUmVmUHRyPElu
c3BlY3RvclZhbHVlPiBJbnNwZWN0b3JBcnJheUJhc2U6OmdldChzaXplX3QgaW5kZXgpCitSZWZQ
dHI8SW5zcGVjdG9yVmFsdWU+IEluc3BlY3RvckFycmF5QmFzZTo6Z2V0KHNpemVfdCBpbmRleCkg
Y29uc3QKIHsKICAgICBBU1NFUlRfV0lUSF9TRUNVUklUWV9JTVBMSUNBVElPTihpbmRleCA8IG1f
ZGF0YS5zaXplKCkpOwogICAgIHJldHVybiBtX2RhdGFbaW5kZXhdOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaCBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmgKaW5kZXggYmFmZmNiMGI1
YjNkY2Y3YTc3MjFjZTRkZTBlYWJlNGFiNDhmOTAzMC4uZGIwNTAzNmQwYzBkYzUyMzdhNDZiNTg3
MjgzY2Q2ZTYxMGI3MTVlOCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclZhbHVlcy5oCkBAIC0yNzksNyArMjc5LDcgQEAgcHJvdGVjdGVkOgogICAg
IHZvaWQgcHVzaE9iamVjdChSZWZQdHI8SW5zcGVjdG9yT2JqZWN0QmFzZT4mJik7CiAgICAgdm9p
ZCBwdXNoQXJyYXkoUmVmUHRyPEluc3BlY3RvckFycmF5QmFzZT4mJik7CiAKLSAgICBSZWZQdHI8
SW5zcGVjdG9yVmFsdWU+IGdldChzaXplX3QgaW5kZXgpOworICAgIFJlZlB0cjxJbnNwZWN0b3JW
YWx1ZT4gZ2V0KHNpemVfdCBpbmRleCkgY29uc3Q7CiAKICAgICB2aXJ0dWFsIHZvaWQgd3JpdGVK
U09OKFN0cmluZ0J1aWxkZXImIG91dHB1dCkgY29uc3Qgb3ZlcnJpZGU7CiAKZGlmZiAtLWdpdCBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2Vy
QWdlbnQuY3BwIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVj
dG9yRGVidWdnZXJBZ2VudC5jcHAKaW5kZXggNTJhZDIxZmZkZGFhZDI1YjRmNTZmYTQ1NDg1NTkz
OTA5NzJiNDQ5YS4uYTc1ZTBiMmI2ZWM3ZThjOWRkZDY3N2ZmOTQ4NWM5ZThmZTlkYmU0ZCAxMDA2
NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9y
RGVidWdnZXJBZ2VudC5jcHAKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9h
Z2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5jcHAKQEAgLTI3NSw3ICsyNzUsNyBAQCBib29s
IEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmJyZWFrcG9pbnRBY3Rpb25zRnJvbVByb3RvY29sKEVy
cm9yU3RyaW5nJiBlcnJvclN0cgogICAgIHJldHVybiB0cnVlOwogfQogCi12b2lkIEluc3BlY3Rv
ckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyYgZXJyb3JTdHJp
bmcsIGludCBsaW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMLCBjb25z
dCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogY29uc3Qgb3B0aW9u
YWxDb2x1bW5OdW1iZXIsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgb3B0aW9ucywg
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCogb3V0QnJlYWtwb2lu
dElkZW50aWZpZXIsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+PiYgbG9jYXRpb25zKQordm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFVSTCwgY29u
c3QgU3RyaW5nKiBjb25zdCBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBpbnQqIGNvbnN0IG9wdGlv
bmFsQ29sdW1uTnVtYmVyLCBjb25zdCBJbnNwZWN0b3JPYmplY3QqIG9wdGlvbnMsIEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVudGlm
aWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RGVidWdnZXI6OkxvY2F0aW9uPj4mIGxvY2F0aW9ucykKIHsKICAgICBsb2NhdGlvbnMgPSBJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6
TG9jYXRpb24+OjpjcmVhdGUoKTsKICAgICBpZiAoIW9wdGlvbmFsVVJMID09ICFvcHRpb25hbFVS
TFJlZ2V4KSB7CkBAIC0zMjEsNyArMzIxLDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpzZXRCcmVha3BvaW50QnlVcmwoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbGkKICAg
ICAqb3V0QnJlYWtwb2ludElkZW50aWZpZXIgPSBicmVha3BvaW50SWRlbnRpZmllcjsKIH0KIAot
c3RhdGljIGJvb2wgcGFyc2VMb2NhdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEluc3Bl
Y3Rvck9iamVjdCYgbG9jYXRpb24sIEpTQzo6U291cmNlSUQmIHNvdXJjZUlELCB1bnNpZ25lZCYg
bGluZU51bWJlciwgdW5zaWduZWQmIGNvbHVtbk51bWJlcikKK3N0YXRpYyBib29sIHBhcnNlTG9j
YXRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIGxv
Y2F0aW9uLCBKU0M6OlNvdXJjZUlEJiBzb3VyY2VJRCwgdW5zaWduZWQmIGxpbmVOdW1iZXIsIHVu
c2lnbmVkJiBjb2x1bW5OdW1iZXIpCiB7CiAgICAgU3RyaW5nIHNjcmlwdElEU3RyOwogICAgIGlm
ICghbG9jYXRpb24uZ2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic2NyaXB0SWQiKSwgc2NyaXB0SURT
dHIpIHx8ICFsb2NhdGlvbi5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgibGluZU51bWJlciIpLCBs
aW5lTnVtYmVyKSkgewpAQCAtMzM2LDEyICszMzYsMTIgQEAgc3RhdGljIGJvb2wgcGFyc2VMb2Nh
dGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEluc3BlY3Rvck9iamVjdCYgbG9jYXRpb24s
IEoKICAgICByZXR1cm4gdHJ1ZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50Ojpz
ZXRCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4mJiBsb2NhdGlvbiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBv
cHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRC
cmVha3BvaW50SWRlbnRpZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2Vy
OjpMb2NhdGlvbj4mIGFjdHVhbExvY2F0aW9uKQordm9pZCBJbnNwZWN0b3JEZWJ1Z2dlckFnZW50
OjpzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSW5zcGVjdG9y
T2JqZWN0JiBsb2NhdGlvbiwgY29uc3QgSW5zcGVjdG9yT2JqZWN0KiBvcHRpb25zLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRCcmVha3BvaW50SWRlbnRp
ZmllciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4mIGFj
dHVhbExvY2F0aW9uKQogewogICAgIEpTQzo6U291cmNlSUQgc291cmNlSUQ7CiAgICAgdW5zaWdu
ZWQgbGluZU51bWJlcjsKICAgICB1bnNpZ25lZCBjb2x1bW5OdW1iZXI7Ci0gICAgaWYgKCFwYXJz
ZUxvY2F0aW9uKGVycm9yU3RyaW5nLCAqbG9jYXRpb24sIHNvdXJjZUlELCBsaW5lTnVtYmVyLCBj
b2x1bW5OdW1iZXIpKQorICAgIGlmICghcGFyc2VMb2NhdGlvbihlcnJvclN0cmluZywgbG9jYXRp
b24sIHNvdXJjZUlELCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpKQogICAgICAgICByZXR1cm47
CiAKICAgICBTdHJpbmcgY29uZGl0aW9uID0gZW1wdHlTdHJpbmcoKTsKQEAgLTM4OCw3ICszODgs
NyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnJlbW92ZUJyZWFrcG9pbnQoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyZWFrcAogICAgIH0KIH0KIAotdm9pZCBJbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGxvY2F0aW9uKQordm9pZCBJbnNwZWN0
b3JEZWJ1Z2dlckFnZW50Ojpjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3Ry
aW5nLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIGxvY2F0aW9uKQogewogICAgIGlmIChtX2NvbnRp
bnVlVG9Mb2NhdGlvbkJyZWFrcG9pbnRJRCAhPSBKU0M6Om5vQnJlYWtwb2ludElEKSB7CiAgICAg
ICAgIHNjcmlwdERlYnVnU2VydmVyKCkucmVtb3ZlQnJlYWtwb2ludChtX2NvbnRpbnVlVG9Mb2Nh
dGlvbkJyZWFrcG9pbnRJRCk7CkBAIC0zOTgsNyArMzk4LDcgQEAgdm9pZCBJbnNwZWN0b3JEZWJ1
Z2dlckFnZW50Ojpjb250aW51ZVRvTG9jYXRpb24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdAogICAgIEpTQzo6U291cmNlSUQgc291cmNlSUQ7CiAgICAgdW5zaWduZWQgbGluZU51bWJl
cjsKICAgICB1bnNpZ25lZCBjb2x1bW5OdW1iZXI7Ci0gICAgaWYgKCFwYXJzZUxvY2F0aW9uKGVy
cm9yU3RyaW5nLCAqbG9jYXRpb24sIHNvdXJjZUlELCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIp
KQorICAgIGlmICghcGFyc2VMb2NhdGlvbihlcnJvclN0cmluZywgbG9jYXRpb24sIHNvdXJjZUlE
LCBsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIpKQogICAgICAgICByZXR1cm47CiAKICAgICBTY3Jp
cHRCcmVha3BvaW50IGJyZWFrcG9pbnQobGluZU51bWJlciwgY29sdW1uTnVtYmVyLCAiIiwgZmFs
c2UpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMv
SW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rv
ci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJBZ2VudC5oCmluZGV4IDc5NDg2NDAyZmI3ZjVjMmMw
MzI5NTAwZGRkOWFlODA4Mjg1NDlhNTAuLjI4MjQ5ZTI3NjJkMDRmMmYxNzM0NjM0MWQ3ZjRhZTYw
MjU1ZTIwNjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdl
bnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKQEAgLTcxLDEwICs3MSwx
MCBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmluZyYpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIHNldEJyZWFrcG9pbnRzQWN0aXZlKEVycm9yU3RyaW5nJiwgYm9vbCBh
Y3RpdmUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50QnlVcmwoRXJy
b3JTdHJpbmcmLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTCwgY29u
c3QgU3RyaW5nKiBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBpbnQqIG9wdGlvbmFsQ29sdW1uTnVt
YmVyLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgb3B0aW9ucywg
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6TG9j
YXRpb24+PiYgbG9jYXRpb25zKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtw
b2ludChFcnJvclN0cmluZyYsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4mJiBsb2NhdGlvbiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYm
IG9wdGlvbnMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPiYgYWN0dWFsTG9j
YXRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50QnlVcmwoRXJy
b3JTdHJpbmcmLCBpbnQgbGluZU51bWJlciwgY29uc3QgU3RyaW5nKiBvcHRpb25hbFVSTCwgY29u
c3QgU3RyaW5nKiBvcHRpb25hbFVSTFJlZ2V4LCBjb25zdCBpbnQqIG9wdGlvbmFsQ29sdW1uTnVt
YmVyLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogb3B0aW9ucywgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+PiYg
bG9jYXRpb25zKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0QnJlYWtwb2ludChFcnJv
clN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBsb2NhdGlvbiwgY29u
c3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG9wdGlvbnMsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGVidWdnZXI6OkxvY2F0aW9uPiYgYWN0dWFsTG9jYXRpb24pIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCByZW1vdmVCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBicmVh
a3BvaW50SWRlbnRpZmllcikgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlVG9M
b2NhdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgbG9j
YXRpb24pIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBjb250aW51ZVRvTG9jYXRpb24oRXJy
b3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIGxvY2F0aW9uKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgc2VhcmNoSW5Db250ZW50KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBzY3JpcHRJRCwgY29uc3QgU3RyaW5nJiBxdWVyeSwgY29uc3QgYm9vbCogb3B0aW9uYWxDYXNl
U2Vuc2l0aXZlLCBjb25zdCBib29sKiBvcHRpb25hbElzUmVnZXgsIFJlZlB0cjxJbnNwZWN0b3I6
OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpHZW5lcmljVHlwZXM6OlNlYXJj
aE1hdGNoPj4mKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZ2V0U2NyaXB0U291cmNlKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzY3JpcHRJRCwgU3RyaW5nKiBzY3JpcHRTb3VyY2Up
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBnZXRGdW5jdGlvbkRldGFpbHMoRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIGZ1bmN0aW9uSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpEZWJ1Z2dlcjo6RnVuY3Rpb25EZXRhaWxzPiYpIG92ZXJyaWRlOwpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50
LmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1
bnRpbWVBZ2VudC5jcHAKaW5kZXggZmFhMmRkYjlkODFkYzdiNGY0MDVjNjNmYmI1MjBkMDU4NWIy
NmZhZi4uZTNlYzg2MjNjODQ0YTgxNTQ2MDExZTM5YmJlMmM2YTBhZGE3MTk5NiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGlt
ZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCkBAIC0xMzQsNyArMTM0LDcgQEAgdm9pZCBJbnNwZWN0
b3JSdW50aW1lQWdlbnQ6OmV2YWx1YXRlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiBleHAKICAgICB9CiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpjYWxs
RnVuY3Rpb25PbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0
SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgUmVmUHRyPEluc3BlY3RvckFycmF5
PiYmIG9wdGlvbmFsQXJndW1lbnRzLCBjb25zdCBib29sKiBjb25zdCBkb05vdFBhdXNlT25FeGNl
cHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIGNvbnN0IHJldHVybkJ5VmFsdWUsIGNv
bnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1
bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0
cHV0PGJvb2w+KiB3YXNUaHJvd24pCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Y2FsbEZ1
bmN0aW9uT24oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIG9iamVjdElk
LCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IEluc3BlY3RvckFycmF5KiBvcHRpb25h
bEFyZ3VtZW50cywgY29uc3QgYm9vbCogY29uc3QgZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11
dGVDb25zb2xlLCBjb25zdCBib29sKiBjb25zdCByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBn
ZW5lcmF0ZVByZXZpZXcsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1v
dGVPYmplY3Q+JiByZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiog
d2FzVGhyb3duKQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2NyaXB0ID0gbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOwog
ICAgIGlmIChpbmplY3RlZFNjcmlwdC5oYXNOb1ZhbHVlKCkpIHsKQEAgLTIxMCwxMiArMjEwLDEy
IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRDb2xsZWN0aW9uRW50cmllcyhFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAgaW5qZWN0ZWRTY3JpcHQuZ2V0Q29sbGVj
dGlvbkVudHJpZXMoZXJyb3JTdHJpbmcsIG9iamVjdElkLCBvYmplY3RHcm91cCA/ICpvYmplY3RH
cm91cCA6IFN0cmluZygpLCBzdGFydCwgZmV0Y2gsICZlbnRyaWVzKTsKIH0KIAotdm9pZCBJbnNw
ZWN0b3JSdW50aW1lQWdlbnQ6OnNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgY2FsbEFyZ3VtZW50LCBj
b25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0
cHV0PGludD4qIHNhdmVkUmVzdWx0SW5kZXgpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6
c2F2ZVJlc3VsdChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0JiBjYWxsQXJndW1lbnQsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElk
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogc2F2ZWRSZXN1bHRJbmRleCkK
IHsKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3RlZFNjcmlwdDsKIAogICAgIFN0cmluZyBvYmpl
Y3RJZDsKLSAgICBpZiAoY2FsbEFyZ3VtZW50LT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJvYmpl
Y3RJZCIpLCBvYmplY3RJZCkpIHsKKyAgICBpZiAoY2FsbEFyZ3VtZW50LmdldFN0cmluZyhBU0NJ
SUxpdGVyYWwoIm9iamVjdElkIiksIG9iamVjdElkKSkgewogICAgICAgICBpbmplY3RlZFNjcmlw
dCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvck9iamVjdElkKG9i
amVjdElkKTsKICAgICAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05vVmFsdWUoKSkgewogICAg
ICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIkluc3BlY3RlZCBmcmFtZSBoYXMg
Z29uZSIpOwpAQCAtMjI3LDcgKzIyNyw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50Ojpz
YXZlUmVzdWx0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluCiAgICAg
ICAgICAgICByZXR1cm47CiAgICAgfQogCi0gICAgaW5qZWN0ZWRTY3JpcHQuc2F2ZVJlc3VsdChl
cnJvclN0cmluZywgY2FsbEFyZ3VtZW50LT50b0pTT05TdHJpbmcoKSwgc2F2ZWRSZXN1bHRJbmRl
eCk7CisgICAgaW5qZWN0ZWRTY3JpcHQuc2F2ZVJlc3VsdChlcnJvclN0cmluZywgY2FsbEFyZ3Vt
ZW50LnRvSlNPTlN0cmluZygpLCBzYXZlZFJlc3VsdEluZGV4KTsKIH0KIAogdm9pZCBJbnNwZWN0
b3JSdW50aW1lQWdlbnQ6OnJlbGVhc2VPYmplY3QoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IG9iamVjdElkKQpAQCAtMjQ3LDcgKzI0Nyw3IEBAIHZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50
OjpydW4oRXJyb3JTdHJpbmcmKQogICAgIC8vIEZJWE1FOiA8aHR0cHM6Ly93ZWJraXQub3JnL2Iv
MTI3NjM0PiBXZWIgSW5zcGVjdG9yOiBzdXBwb3J0IGRlYnVnZ2luZyB3ZWIgd29ya2VycwogfQog
Ci12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVz
QXRPZmZzZXRzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yQXJyYXk+JiYgbG9jYXRpb25zLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4m
IHR5cGVEZXNjcmlwdGlvbnMpCit2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6Z2V0UnVudGlt
ZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29u
c3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYgbG9jYXRpb25zLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6VHlwZURlc2Ny
aXB0aW9uPj4mIHR5cGVEZXNjcmlwdGlvbnMpCiB7CiAgICAgc3RhdGljIGNvbnN0IGJvb2wgdmVy
Ym9zZSA9IGZhbHNlOwogICAgIFZNJiB2bSA9IGdsb2JhbFZNKCk7CkBAIC0yNjAsOCArMjYwLDgg
QEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmdldFJ1bnRpbWVUeXBlc0ZvclZhcmlhYmxl
c0F0T2Zmc2V0cyhFcnJvclN0cmluZyYgZXIKICAgICBkb3VibGUgc3RhcnQgPSBjdXJyZW50VGlt
ZU1TKCk7CiAgICAgdm0udHlwZVByb2ZpbGVyTG9nKCktPnByb2Nlc3NMb2dFbnRyaWVzKEFTQ0lJ
TGl0ZXJhbCgiVXNlciBRdWVyeSIpKTsKIAotICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgbG9j
YXRpb25zLT5sZW5ndGgoKTsgaSsrKSB7Ci0gICAgICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3RvclZhbHVlPiB2YWx1ZSA9IGxvY2F0aW9ucy0+Z2V0KGkpOworICAgIGZvciAoc2l6ZV90IGkg
PSAwOyBpIDwgbG9jYXRpb25zLmxlbmd0aCgpOyBpKyspIHsKKyAgICAgICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHZhbHVlID0gbG9jYXRpb25zLmdldChpKTsKICAgICAgICAg
UmVmUHRyPEluc3BlY3Rvck9iamVjdD4gbG9jYXRpb247CiAgICAgICAgIGlmICghdmFsdWUtPmFz
T2JqZWN0KGxvY2F0aW9uKSkgewogICAgICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVy
YWwoIkFycmF5IG9mIFR5cGVMb2NhdGlvbiBvYmplY3RzIGhhcyBhbiBvYmplY3QgdGhhdCBkb2Vz
IG5vdCBoYXZlIHR5cGUgb2YgVHlwZUxvY2F0aW9uLiIpOwpkaWZmIC0tZ2l0IGEvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmggYi9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdl
bnQuaAppbmRleCBiZjA1ZGRjYTQzZDhhOTZiNmQ2Y2Y4NDcxOGY2NDFjOTNmNjQzNjFmLi4yNWYz
ZDdjMTRhYWNjMDU1NzI0MGI3YjE3NmJjZjNjM2M1YTliMjEzIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
SmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaAor
KysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50
aW1lQWdlbnQuaApAQCAtNjEsMTUgKzYxLDE1IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQg
ZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlIHsgbV9lbmFibGVkID0gZmFsc2U7IH0KICAg
ICB2aXJ0dWFsIHZvaWQgcGFyc2UoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Np
b24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlN5bnRheEVycm9yVHlwZSogcmVzdWx0
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogbWVzc2FnZSwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkVycm9yUmFuZ2U+Jikgb3ZlcnJpZGUgZmlu
YWw7CiAgICAgdmlydHVhbCB2b2lkIGV2YWx1YXRlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5n
JiBleHByZXNzaW9uLCBjb25zdCBTdHJpbmcqIG9iamVjdEdyb3VwLCBjb25zdCBib29sKiBpbmNs
dWRlQ29tbWFuZExpbmVBUEksIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRN
dXRlQ29uc29sZSwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQsIGNvbnN0IGJvb2wqIHJl
dHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgY29uc3QgYm9vbCogc2F2
ZVJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVj
dD4mIHJlc3VsdCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJv
d24sIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBzYXZlZFJlc3VsdEluZGV4
KSBvdmVycmlkZSBmaW5hbDsKLSAgICB2aXJ0dWFsIHZvaWQgY2FsbEZ1bmN0aW9uT24oRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24s
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIG9wdGlvbmFsQXJndW1l
bnRzLCBjb25zdCBib29sKiBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNv
bnN0IGJvb2wqIHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVm
UHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwg
SW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pIG92ZXJyaWRl
IGZpbmFsOworICAgIHZpcnR1YWwgdm9pZCBjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgSW5z
cGVjdG9yOjpJbnNwZWN0b3JBcnJheSogb3B0aW9uYWxBcmd1bWVudHMsIGNvbnN0IGJvb2wqIGRv
Tm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogcmV0dXJuQnlW
YWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29s
OjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVh
bCB2b2lkIHJlbGVhc2VPYmplY3QoRXJyb3JTdHJpbmcmLCBjb25zdCBFcnJvclN0cmluZyYgb2Jq
ZWN0SWQpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBnZXRQcm9wZXJ0aWVzKEVy
cm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogb3duUHJvcGVy
dGllcywgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJvcGVydHlEZXNjcmlw
dG9yPj4mIHJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rv
cjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlwdG9yPj4mIGludGVy
bmFsUHJvcGVydGllcykgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2b2lkIGdldERpc3Bs
YXlhYmxlUHJvcGVydGllcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNv
bnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlByb3BlcnR5RGVzY3JpcHRvcj4+JiBy
ZXN1bHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpSdW50aW1lOjpJbnRlcm5hbFByb3BlcnR5RGVzY3JpcHRvcj4+JiBpbnRlcm5hbFByb3Bl
cnRpZXMpIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBnZXRDb2xsZWN0aW9uRW50
cmllcyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyog
b2JqZWN0R3JvdXAsIGNvbnN0IGludCogc3RhcnRJbmRleCwgY29uc3QgaW50KiBudW1iZXJUb0Zl
dGNoLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6UnVudGltZTo6Q29sbGVjdGlvbkVudHJ5Pj4mIGVudHJpZXMpIG92ZXJyaWRlIGZpbmFsOwot
ICAgIHZpcnR1YWwgdm9pZCBzYXZlUmVzdWx0KEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGNhbGxBcmd1bWVudCwgY29uc3QgaW50KiBleGVj
dXRpb25Db250ZXh0SWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBzYXZl
ZFJlc3VsdEluZGV4KSBvdmVycmlkZSBmaW5hbDsKKyAgICB2aXJ0dWFsIHZvaWQgc2F2ZVJlc3Vs
dChFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBjYWxsQXJn
dW1lbnQsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElkLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpPcHRPdXRwdXQ8aW50Piogc2F2ZWRSZXN1bHRJbmRleCkgb3ZlcnJpZGUgZmluYWw7CiAgICAg
dmlydHVhbCB2b2lkIHJlbGVhc2VPYmplY3RHcm91cChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgb2JqZWN0R3JvdXApIG92ZXJyaWRlIGZpbmFsOwogICAgIHZpcnR1YWwgdm9pZCBydW4oRXJy
b3JTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0UnVudGltZVR5cGVzRm9y
VmFyaWFibGVzQXRPZmZzZXRzKEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yQXJyYXk+JiYgbG9jYXRpb25zLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4mKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgZ2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVzQXRP
ZmZzZXRzKEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYgbG9j
YXRpb25zLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90
b2NvbDo6UnVudGltZTo6VHlwZURlc2NyaXB0aW9uPj4mKSBvdmVycmlkZTsKICAgICB2aXJ0dWFs
IHZvaWQgZW5hYmxlVHlwZVByb2ZpbGVyKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIGRpc2FibGVUeXBlUHJvZmlsZXIoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgZ2V0QmFzaWNCbG9ja3MoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcm
IGluX3NvdXJjZUlELCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9y
OjpQcm90b2NvbDo6UnVudGltZTo6QmFzaWNCbG9jaz4+JiBvdXRfYmFzaWNCbG9ja3MpIG92ZXJy
aWRlOwpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRz
L2NvZGVnZW4vY3BwX2dlbmVyYXRvci5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3IucHkKaW5kZXggZGY5MGJlOTJkNWI0ZjUz
NGFlZjBjM2UwNmZlY2FmNTMxOTVkNjNmYi4uZWRkMzMwZGE0OGQwMWEzMjUwOTYzZmQwMWRlMmI5
ODQxMGQ5MTBiMCAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9z
Y3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5CkBAIC0zOSw2ICsz
OSw3IEBAIF9QUklNSVRJVkVfVE9fQ1BQX05BTUVfTUFQID0gewogICAgICdudW1iZXInOiAnZG91
YmxlJywKICAgICAnc3RyaW5nJzogJ1N0cmluZycsCiAgICAgJ29iamVjdCc6ICdJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdCcsCisgICAgJ2FycmF5JzogJ0luc3BlY3Rvcjo6SW5zcGVjdG9yQXJy
YXknLAogICAgICdhbnknOiAnSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZScKIH0KIApAQCAtMTE5
LDkgKzEyMCwxNyBAQCBjbGFzcyBDcHBHZW5lcmF0b3I6CiAKICAgICAgICAgIyBUaGlzIGhhbmRs
ZXMgdGhlICdhbnknIHR5cGUgYW5kIG9iamVjdHMgd2l0aCBkZWZpbmVkIHByb3BlcnRpZXMuCiAg
ICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIE9iamVjdFR5cGUpIG9yIF90eXBlLnF1YWxpZmll
ZF9uYW1lKCkgaXMgJ29iamVjdCc6Ci0gICAgICAgICAgICByZXR1cm4gJ2NvbnN0IFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJicKKyAgICAgICAgICAgIGNwcF9uYW1lID0gJ0lu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JworICAgICAgICAgICAgaWYgcGFyYW1ldGVyLmlzX29w
dGlvbmFsOgorICAgICAgICAgICAgICAgIHJldHVybiAnY29uc3QgJXMqJyAlIGNwcF9uYW1lCisg
ICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAgIHJldHVybiAnY29uc3QgJXMmJyAlIGNw
cF9uYW1lCiAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5cGUsIEFycmF5VHlwZSk6Ci0gICAgICAg
ICAgICByZXR1cm4gJ2NvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmJwor
ICAgICAgICAgICAgY3BwX25hbWUgPSAnSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheScKKyAgICAg
ICAgICAgIGlmIHBhcmFtZXRlci5pc19vcHRpb25hbDoKKyAgICAgICAgICAgICAgICByZXR1cm4g
J2NvbnN0ICVzKicgJSBjcHBfbmFtZQorICAgICAgICAgICAgZWxzZToKKyAgICAgICAgICAgICAg
ICByZXR1cm4gJ2NvbnN0ICVzJicgJSBjcHBfbmFtZQogICAgICAgICBpZiBpc2luc3RhbmNlKF90
eXBlLCBQcmltaXRpdmVUeXBlKToKICAgICAgICAgICAgIGNwcF9uYW1lID0gQ3BwR2VuZXJhdG9y
LmNwcF9uYW1lX2Zvcl9wcmltaXRpdmVfdHlwZShfdHlwZSkKICAgICAgICAgICAgIGlmIHBhcmFt
ZXRlci5pc19vcHRpb25hbDoKZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNw
ZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3BhdGNoZXJfaGVh
ZGVyLnB5IGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4v
Z2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkKaW5kZXggMjNlN2Q5OTcz
YzZmMjA3ZGI5NDI4MzUzZjc3ZTQwMmMzZGRkMTcxOS4uNTRiZGIzZTkxYWMwNzE1ZDdhNmNlMmIz
NmY1NWNjM2YyNDMxNWFkNiAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFk
ZXIucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9oZWFkZXIucHkKQEAgLTEyNyw3ICsx
MjcsMTEgQEAgY2xhc3MgQ3BwQmFja2VuZERpc3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IoR2VuZXJh
dG9yKToKICAgICAgICAgbGluZXMgPSBbXQogICAgICAgICBwYXJhbWV0ZXJzID0gWydFcnJvclN0
cmluZyYnXQogICAgICAgICBmb3IgX3BhcmFtZXRlciBpbiBjb21tYW5kLmNhbGxfcGFyYW1ldGVy
czoKLSAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKCIlcyBpbl8lcyIgJSAoQ3BwR2VuZXJh
dG9yLmNwcF90eXBlX2Zvcl91bmNoZWNrZWRfZm9ybWFsX2luX3BhcmFtZXRlcihfcGFyYW1ldGVy
KSwgX3BhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZSkpCisgICAgICAgICAgICBwYXJhbWV0ZXJfbmFt
ZSA9ICdpbl8nICsgX3BhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZQorICAgICAgICAgICAgaWYgX3Bh
cmFtZXRlci5pc19vcHRpb25hbDoKKyAgICAgICAgICAgICAgICBwYXJhbWV0ZXJfbmFtZSA9ICdv
cHRfJyArIHBhcmFtZXRlcl9uYW1lCisKKyAgICAgICAgICAgIHBhcmFtZXRlcnMuYXBwZW5kKCIl
cyAlcyIgJSAoQ3BwR2VuZXJhdG9yLmNwcF90eXBlX2Zvcl91bmNoZWNrZWRfZm9ybWFsX2luX3Bh
cmFtZXRlcihfcGFyYW1ldGVyKSwgcGFyYW1ldGVyX25hbWUpKQogCiAgICAgICAgICAgICBpZiBp
c2luc3RhbmNlKF9wYXJhbWV0ZXIudHlwZSwgRW51bVR5cGUpIGFuZCBfcGFyYW1ldGVyLnBhcmFt
ZXRlcl9uYW1lIG5vdCBpbiB1c2VkX2VudW1fbmFtZXM6CiAgICAgICAgICAgICAgICAgbGluZXMu
YXBwZW5kKHNlbGYuX2dlbmVyYXRlX2Fub255bW91c19lbnVtX2Zvcl9wYXJhbWV0ZXIoX3BhcmFt
ZXRlciwgY29tbWFuZCkpCkBAIC0xNTUsNyArMTU5LDExIEBAIGNsYXNzIENwcEJhY2tlbmREaXNw
YXRjaGVySGVhZGVyR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAKICAgICAgICAgaW5fcGFyYW1ldGVy
cyA9IFsnRXJyb3JTdHJpbmcmJ10KICAgICAgICAgZm9yIF9wYXJhbWV0ZXIgaW4gY29tbWFuZC5j
YWxsX3BhcmFtZXRlcnM6Ci0gICAgICAgICAgICBpbl9wYXJhbWV0ZXJzLmFwcGVuZCgiJXMgaW5f
JXMiICUgKENwcEdlbmVyYXRvci5jcHBfdHlwZV9mb3JfdW5jaGVja2VkX2Zvcm1hbF9pbl9wYXJh
bWV0ZXIoX3BhcmFtZXRlciksIF9wYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUpKQorICAgICAgICAg
ICAgcGFyYW1ldGVyX25hbWUgPSAnaW5fJyArIF9wYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUKKyAg
ICAgICAgICAgIGlmIF9wYXJhbWV0ZXIuaXNfb3B0aW9uYWw6CisgICAgICAgICAgICAgICAgcGFy
YW1ldGVyX25hbWUgPSAnb3B0XycgKyBwYXJhbWV0ZXJfbmFtZQorCisgICAgICAgICAgICBpbl9w
YXJhbWV0ZXJzLmFwcGVuZCgiJXMgJXMiICUgKENwcEdlbmVyYXRvci5jcHBfdHlwZV9mb3JfdW5j
aGVja2VkX2Zvcm1hbF9pbl9wYXJhbWV0ZXIoX3BhcmFtZXRlciksIHBhcmFtZXRlcl9uYW1lKSkK
ICAgICAgICAgaW5fcGFyYW1ldGVycy5hcHBlbmQoIlJlZjwlcz4mJiBjYWxsYmFjayIgJSBjYWxs
YmFja05hbWUpCiAKICAgICAgICAgb3V0X3BhcmFtZXRlcnMgPSBbXQpkaWZmIC0tZ2l0IGEvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3Bw
X2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0
Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9iYWNrZW5kX2Rpc3Bh
dGNoZXJfaW1wbGVtZW50YXRpb24ucHkKaW5kZXggZGNkNjY0YTcwNjk3ZjY1ZDgyOGY4MTM3ZTJm
OGE1NWYyZTUyNDNjNC4uMzUwZjA4NTRjYjlhNTZlNzg3YjlkZmI1ZThjOWEwOGVmYmRjZTExOCAx
MDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlzcGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQorKysg
Yi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0
ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CkBAIC0xMzksNiArMTM5
LDcgQEAgY2xhc3MgQ3BwQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihH
ZW5lcmF0b3IpOgogICAgICAgICBmb3IgcGFyYW1ldGVyIGluIGNvbW1hbmQucmV0dXJuX3BhcmFt
ZXRlcnM6CiAgICAgICAgICAgICBwYXJhbV9hcmdzID0gewogICAgICAgICAgICAgICAgICdrZXll
ZFNldE1ldGhvZCc6IENwcEdlbmVyYXRvci5jcHBfc2V0dGVyX21ldGhvZF9mb3JfdHlwZShwYXJh
bWV0ZXIudHlwZSksCisgICAgICAgICAgICAgICAgJ3BhcmFtZXRlcktleSc6IHBhcmFtZXRlci5w
YXJhbWV0ZXJfbmFtZSwKICAgICAgICAgICAgICAgICAncGFyYW1ldGVyTmFtZSc6IHBhcmFtZXRl
ci5wYXJhbWV0ZXJfbmFtZSwKICAgICAgICAgICAgICAgICAncGFyYW1ldGVyVHlwZSc6IENwcEdl
bmVyYXRvci5jcHBfdHlwZV9mb3Jfc3RhY2tfaW5fcGFyYW1ldGVyKHBhcmFtZXRlciksCiAgICAg
ICAgICAgICB9CkBAIC0xNDgsMTQgKzE0OSwxNCBAQCBjbGFzcyBDcHBCYWNrZW5kRGlzcGF0Y2hl
ckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgICAgICBpZiBwYXJh
bWV0ZXIuaXNfb3B0aW9uYWw6CiAgICAgICAgICAgICAgICAgaWYgQ3BwR2VuZXJhdG9yLnNob3Vs
ZF91c2Vfd3JhcHBlcl9mb3JfcmV0dXJuX3R5cGUocGFyYW1ldGVyLnR5cGUpOgogICAgICAgICAg
ICAgICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgIGlmICglKHBh
cmFtZXRlck5hbWUpcy5pc0Fzc2lnbmVkKCkpJyAlIHBhcmFtX2FyZ3MpCi0gICAgICAgICAgICAg
ICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAgICAgIGpzb25NZXNz
YWdlLT4lKGtleWVkU2V0TWV0aG9kKXMoQVNDSUlMaXRlcmFsKCIlKHBhcmFtZXRlck5hbWUpcyIp
LCAlKHBhcmFtZXRlck5hbWUpcy5nZXRWYWx1ZSgpKTsnICUgcGFyYW1fYXJncykKKyAgICAgICAg
ICAgICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICAgICAganNv
bk1lc3NhZ2UtPiUoa2V5ZWRTZXRNZXRob2QpcyhBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVyS2V5
KXMiKSwgJShwYXJhbWV0ZXJOYW1lKXMuZ2V0VmFsdWUoKSk7JyAlIHBhcmFtX2FyZ3MpCiAgICAg
ICAgICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3Np
Z25tZW50cy5hcHBlbmQoJyAgICBpZiAoJShwYXJhbWV0ZXJOYW1lKXMpJyAlIHBhcmFtX2FyZ3Mp
Ci0gICAgICAgICAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcg
ICAgICAgIGpzb25NZXNzYWdlLT4lKGtleWVkU2V0TWV0aG9kKXMoQVNDSUlMaXRlcmFsKCIlKHBh
cmFtZXRlck5hbWUpcyIpLCAlKHBhcmFtZXRlck5hbWUpcyk7JyAlIHBhcmFtX2FyZ3MpCisgICAg
ICAgICAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAgICAg
IGpzb25NZXNzYWdlLT4lKGtleWVkU2V0TWV0aG9kKXMoQVNDSUlMaXRlcmFsKCIlKHBhcmFtZXRl
cktleSlzIiksICUocGFyYW1ldGVyTmFtZSlzKTsnICUgcGFyYW1fYXJncykKICAgICAgICAgICAg
IGVsaWYgcGFyYW1ldGVyLnR5cGUuaXNfZW51bSgpOgotICAgICAgICAgICAgICAgIG91dF9wYXJh
bWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAganNvbk1lc3NhZ2UtPiUoa2V5ZWRTZXRNZXRo
b2QpcyhBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVyTmFtZSlzIiksIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OmdldEVudW1Db25zdGFudFZhbHVlKCUocGFyYW1ldGVyTmFtZSlzKSk7JyAlIHBhcmFtX2Fy
Z3MpCisgICAgICAgICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAg
ICBqc29uTWVzc2FnZS0+JShrZXllZFNldE1ldGhvZClzKEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0
ZXJLZXkpcyIpLCBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRFbnVtQ29uc3RhbnRWYWx1ZSglKHBh
cmFtZXRlck5hbWUpcykpOycgJSBwYXJhbV9hcmdzKQogICAgICAgICAgICAgZWxzZToKLSAgICAg
ICAgICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgIGpzb25NZXNz
YWdlLT4lKGtleWVkU2V0TWV0aG9kKXMoQVNDSUlMaXRlcmFsKCIlKHBhcmFtZXRlck5hbWUpcyIp
LCAlKHBhcmFtZXRlck5hbWUpcyk7JyAlIHBhcmFtX2FyZ3MpCisgICAgICAgICAgICAgICAgb3V0
X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICBqc29uTWVzc2FnZS0+JShrZXllZFNl
dE1ldGhvZClzKEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0ZXJLZXkpcyIpLCAlKHBhcmFtZXRlck5h
bWUpcyk7JyAlIHBhcmFtX2FyZ3MpCiAKICAgICAgICAgYXN5bmNfYXJncyA9IHsKICAgICAgICAg
ICAgICdkb21haW5OYW1lJzogZG9tYWluLmRvbWFpbl9uYW1lLApAQCAtMTczLDI2ICsxNzQsNDAg
QEAgY2xhc3MgQ3BwQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5l
cmF0b3IpOgogICAgICAgICBtZXRob2RfcGFyYW1ldGVycyA9IFsnZXJyb3InXQogCiAgICAgICAg
IGZvciBwYXJhbWV0ZXIgaW4gY29tbWFuZC5jYWxsX3BhcmFtZXRlcnM6CisgICAgICAgICAgICBw
YXJhbWV0ZXJfbmFtZSA9ICdpbl8nICsgcGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lCisgICAgICAg
ICAgICBpZiBwYXJhbWV0ZXIuaXNfb3B0aW9uYWw6CisgICAgICAgICAgICAgICAgcGFyYW1ldGVy
X25hbWUgPSAnb3B0XycgKyBwYXJhbWV0ZXJfbmFtZQorCiAgICAgICAgICAgICBvdXRfc3VjY2Vz
c19hcmd1bWVudCA9ICdudWxscHRyJwogICAgICAgICAgICAgaWYgcGFyYW1ldGVyLmlzX29wdGlv
bmFsOgotICAgICAgICAgICAgICAgIG91dF9zdWNjZXNzX2FyZ3VtZW50ID0gJyYlc192YWx1ZUZv
dW5kJyAlIHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZQotICAgICAgICAgICAgICAgIGluX3BhcmFt
ZXRlcl9kZWNsYXJhdGlvbnMuYXBwZW5kKCcgICAgYm9vbCAlc192YWx1ZUZvdW5kID0gZmFsc2U7
JyAlIHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZSkKKyAgICAgICAgICAgICAgICBvdXRfc3VjY2Vz
c19hcmd1bWVudCA9ICcmJXNfdmFsdWVGb3VuZCcgJSBwYXJhbWV0ZXJfbmFtZQorICAgICAgICAg
ICAgICAgIGluX3BhcmFtZXRlcl9kZWNsYXJhdGlvbnMuYXBwZW5kKCcgICAgYm9vbCAlc192YWx1
ZUZvdW5kID0gZmFsc2U7JyAlIHBhcmFtZXRlcl9uYW1lKQorCisgICAgICAgICAgICAjIE5vdyBh
ZGQgYXBwcm9wcmlhdGUgb3BlcmF0b3JzLgorICAgICAgICAgICAgcGFyYW1ldGVyX2V4cHJlc3Np
b24gPSBwYXJhbWV0ZXJfbmFtZQogCi0gICAgICAgICAgICBwYXJhbWV0ZXJfZXhwcmVzc2lvbiA9
ICdpbl8nICsgcGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lCiAgICAgICAgICAgICBpZiBDcHBHZW5l
cmF0b3Iuc2hvdWxkX3VzZV9yZWZlcmVuY2VzX2Zvcl90eXBlKHBhcmFtZXRlci50eXBlKToKLSAg
ICAgICAgICAgICAgICBwYXJhbWV0ZXJfZXhwcmVzc2lvbiA9ICclcy5jb3B5UmVmKCknICUgcGFy
YW1ldGVyX2V4cHJlc3Npb24KKyAgICAgICAgICAgICAgICBpZiBwYXJhbWV0ZXIuaXNfb3B0aW9u
YWw6CisgICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcl9leHByZXNzaW9uID0gJyVzLmdldCgp
JyAlIHBhcmFtZXRlcl9leHByZXNzaW9uCisgICAgICAgICAgICAgICAgZWxzZToKKyAgICAgICAg
ICAgICAgICAgICAgIyBUaGlzIGFzc3VtZXMgdGhhdCB3ZSBoYXZlIGFscmVhZHkgcHJvdmVkIHRo
ZSBvYmplY3QgaXMgbm9uLW51bGwuCisgICAgICAgICAgICAgICAgICAgICMgSWYgYSByZXF1aXJl
ZCBwcm9wZXJ0eSBpcyBtaXNzaW5nLCBJbnNwZWN0b3JCYWNrZW5kOjpnZXRPYmplY3Qgd2lsbAor
ICAgICAgICAgICAgICAgICAgICAjIGFwcGVuZCBhIHByb3RvY29sIGVycm9yLCBhbmQgdGhlIG1l
dGhvZCBkaXNwYXRjaGVyIHdpbGwgcmV0dXJuIHdpdGhvdXQKKyAgICAgICAgICAgICAgICAgICAg
IyBpbnZva2luZyB0aGUgYmFja2VuZCBtZXRob2QgKGFuZCBkZXJlZmVyZW5jaW5nIHRoZSBvYmpl
Y3QpLgorICAgICAgICAgICAgICAgICAgICBwYXJhbWV0ZXJfZXhwcmVzc2lvbiA9ICcqJXMnICUg
cGFyYW1ldGVyX2V4cHJlc3Npb24KICAgICAgICAgICAgIGVsaWYgcGFyYW1ldGVyLmlzX29wdGlv
bmFsOgogICAgICAgICAgICAgICAgIHBhcmFtZXRlcl9leHByZXNzaW9uID0gJyYlcycgJSBwYXJh
bWV0ZXJfZXhwcmVzc2lvbgogCiAgICAgICAgICAgICBwYXJhbV9hcmdzID0gewogICAgICAgICAg
ICAgICAgICdwYXJhbWV0ZXJUeXBlJzogQ3BwR2VuZXJhdG9yLmNwcF90eXBlX2Zvcl9zdGFja19p
bl9wYXJhbWV0ZXIocGFyYW1ldGVyKSwKLSAgICAgICAgICAgICAgICAncGFyYW1ldGVyTmFtZSc6
IHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZSwKKyAgICAgICAgICAgICAgICAncGFyYW1ldGVyS2V5
JzogcGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lLAorICAgICAgICAgICAgICAgICdwYXJhbWV0ZXJO
YW1lJzogcGFyYW1ldGVyX25hbWUsCiAgICAgICAgICAgICAgICAgJ3BhcmFtZXRlckV4cHJlc3Np
b24nOiBwYXJhbWV0ZXJfZXhwcmVzc2lvbiwKICAgICAgICAgICAgICAgICAna2V5ZWRHZXRNZXRo
b2QnOiBDcHBHZW5lcmF0b3IuY3BwX2dldHRlcl9tZXRob2RfZm9yX3R5cGUocGFyYW1ldGVyLnR5
cGUpLAogICAgICAgICAgICAgICAgICdzdWNjZXNzT3V0UGFyYW0nOiBvdXRfc3VjY2Vzc19hcmd1
bWVudAogICAgICAgICAgICAgfQogCi0gICAgICAgICAgICBpbl9wYXJhbWV0ZXJfZGVjbGFyYXRp
b25zLmFwcGVuZCgnICAgICUocGFyYW1ldGVyVHlwZSlzIGluXyUocGFyYW1ldGVyTmFtZSlzID0g
QmFja2VuZERpc3BhdGNoZXI6OiUoa2V5ZWRHZXRNZXRob2QpcyhwYXJhbXNDb250YWluZXIuZ2V0
KCksIEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0ZXJOYW1lKXMiKSwgJShzdWNjZXNzT3V0UGFyYW0p
cywgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOycgJSBwYXJhbV9hcmdzKQorICAgICAgICAgICAgaW5f
cGFyYW1ldGVyX2RlY2xhcmF0aW9ucy5hcHBlbmQoJyAgICAlKHBhcmFtZXRlclR5cGUpcyAlKHBh
cmFtZXRlck5hbWUpcyA9IEJhY2tlbmREaXNwYXRjaGVyOjolKGtleWVkR2V0TWV0aG9kKXMocGFy
YW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVyS2V5KXMiKSwgJShz
dWNjZXNzT3V0UGFyYW0pcywgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOycgJSBwYXJhbV9hcmdzKQog
CiAgICAgICAgICAgICBpZiBwYXJhbWV0ZXIuaXNfb3B0aW9uYWw6CiAgICAgICAgICAgICAgICAg
b3B0aW9uYWxfaW5fcGFyYW1ldGVyX3N0cmluZyA9ICclKHBhcmFtZXRlck5hbWUpc192YWx1ZUZv
dW5kID8gJShwYXJhbWV0ZXJFeHByZXNzaW9uKXMgOiBudWxscHRyJyAlIHBhcmFtX2FyZ3MKQEAg
LTIxNyw2ICsyMzIsNyBAQCBjbGFzcyBDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9u
R2VuZXJhdG9yKEdlbmVyYXRvcik6CiAgICAgICAgICAgICBmb3IgcGFyYW1ldGVyIGluIGNvbW1h
bmQucmV0dXJuX3BhcmFtZXRlcnM6CiAgICAgICAgICAgICAgICAgcGFyYW1fYXJncyA9IHsKICAg
ICAgICAgICAgICAgICAgICAgJ3BhcmFtZXRlclR5cGUnOiBDcHBHZW5lcmF0b3IuY3BwX3R5cGVf
Zm9yX3N0YWNrX291dF9wYXJhbWV0ZXIocGFyYW1ldGVyKSwKKyAgICAgICAgICAgICAgICAgICAg
J3BhcmFtZXRlcktleSc6IHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgJ3BhcmFtZXRlck5hbWUnOiBwYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUsCiAgICAgICAg
ICAgICAgICAgICAgICdrZXllZFNldE1ldGhvZCc6IENwcEdlbmVyYXRvci5jcHBfc2V0dGVyX21l
dGhvZF9mb3JfdHlwZShwYXJhbWV0ZXIudHlwZSksCiAKQEAgLTIyNiwxNCArMjQyLDE0IEBAIGNs
YXNzIENwcEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9y
KToKICAgICAgICAgICAgICAgICBpZiBwYXJhbWV0ZXIuaXNfb3B0aW9uYWw6CiAgICAgICAgICAg
ICAgICAgICAgIGlmIENwcEdlbmVyYXRvci5zaG91bGRfdXNlX3dyYXBwZXJfZm9yX3JldHVybl90
eXBlKHBhcmFtZXRlci50eXBlKToKICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9wYXJhbWV0
ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAgICAgIGlmIChvdXRfJShwYXJhbWV0ZXJOYW1lKXMu
aXNBc3NpZ25lZCgpKScgJSBwYXJhbV9hcmdzKQotICAgICAgICAgICAgICAgICAgICAgICAgb3V0
X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICAgICAgICAgIHJlc3VsdC0+JShrZXll
ZFNldE1ldGhvZClzKEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0ZXJOYW1lKXMiKSwgb3V0XyUocGFy
YW1ldGVyTmFtZSlzLmdldFZhbHVlKCkpOycgJSBwYXJhbV9hcmdzKQorICAgICAgICAgICAgICAg
ICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICAgICAgICAgIHJl
c3VsdC0+JShrZXllZFNldE1ldGhvZClzKEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0ZXJLZXkpcyIp
LCBvdXRfJShwYXJhbWV0ZXJOYW1lKXMuZ2V0VmFsdWUoKSk7JyAlIHBhcmFtX2FyZ3MpCiAgICAg
ICAgICAgICAgICAgICAgIGVsc2U6CiAgICAgICAgICAgICAgICAgICAgICAgICBvdXRfcGFyYW1l
dGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgICAgICBpZiAob3V0XyUocGFyYW1ldGVyTmFtZSlz
KScgJSBwYXJhbV9hcmdzKQotICAgICAgICAgICAgICAgICAgICAgICAgb3V0X3BhcmFtZXRlcl9h
c3NpZ25tZW50cy5hcHBlbmQoJyAgICAgICAgICAgIHJlc3VsdC0+JShrZXllZFNldE1ldGhvZClz
KEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0ZXJOYW1lKXMiKSwgb3V0XyUocGFyYW1ldGVyTmFtZSlz
KTsnICUgcGFyYW1fYXJncykKKyAgICAgICAgICAgICAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJf
YXNzaWdubWVudHMuYXBwZW5kKCcgICAgICAgICAgICByZXN1bHQtPiUoa2V5ZWRTZXRNZXRob2Qp
cyhBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVyS2V5KXMiKSwgb3V0XyUocGFyYW1ldGVyTmFtZSlz
KTsnICUgcGFyYW1fYXJncykKICAgICAgICAgICAgICAgICBlbGlmIHBhcmFtZXRlci50eXBlLmlz
X2VudW0oKToKLSAgICAgICAgICAgICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5h
cHBlbmQoJyAgICAgICAgcmVzdWx0LT4lKGtleWVkU2V0TWV0aG9kKXMoQVNDSUlMaXRlcmFsKCIl
KHBhcmFtZXRlck5hbWUpcyIpLCBJbnNwZWN0b3I6OlByb3RvY29sOjpnZXRFbnVtQ29uc3RhbnRW
YWx1ZShvdXRfJShwYXJhbWV0ZXJOYW1lKXMpKTsnICUgcGFyYW1fYXJncykKKyAgICAgICAgICAg
ICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICAgICAgcmVzdWx0
LT4lKGtleWVkU2V0TWV0aG9kKXMoQVNDSUlMaXRlcmFsKCIlKHBhcmFtZXRlcktleSlzIiksIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OmdldEVudW1Db25zdGFudFZhbHVlKG91dF8lKHBhcmFtZXRlck5h
bWUpcykpOycgJSBwYXJhbV9hcmdzKQogICAgICAgICAgICAgICAgIGVsc2U6Ci0gICAgICAgICAg
ICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAgICAgIHJlc3Vs
dC0+JShrZXllZFNldE1ldGhvZClzKEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0ZXJOYW1lKXMiKSwg
b3V0XyUocGFyYW1ldGVyTmFtZSlzKTsnICUgcGFyYW1fYXJncykKKyAgICAgICAgICAgICAgICAg
ICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICAgICAgcmVzdWx0LT4lKGtl
eWVkU2V0TWV0aG9kKXMoQVNDSUlMaXRlcmFsKCIlKHBhcmFtZXRlcktleSlzIiksIG91dF8lKHBh
cmFtZXRlck5hbWUpcyk7JyAlIHBhcmFtX2FyZ3MpCiAKICAgICAgICAgICAgICAgICBpZiBDcHBH
ZW5lcmF0b3Iuc2hvdWxkX3Bhc3NfYnlfY29weV9mb3JfcmV0dXJuX3R5cGUocGFyYW1ldGVyLnR5
cGUpOgogICAgICAgICAgICAgICAgICAgICBtZXRob2RfcGFyYW1ldGVycy5hcHBlbmQoJ291dF8n
ICsgcGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lKQpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0
aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdCBiL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9w
dGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKaW5kZXggOTAwNDU2NWQ0
ZWQ3YjkyMTFjYWM4YjlkYzM1NzE4OGU4ZjBkYmIxNy4uMDgzYzZlMmUzZGFiMTRjMWI5YzNkODI4
ZTgyNDRlNTM1NDBmOWEyNiAxMDA2NDQKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3Bl
Y3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1y
ZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1j
YWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0CkBAIC01MSw4ICs1MSw4IEBAIHByaXZh
dGU6CiBjbGFzcyBBbHRlcm5hdGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyIDogcHVibGljIEFs
dGVybmF0ZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKICAgICB2aXJ0dWFsIH5BbHRlcm5h
dGVEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyKCkgeyB9Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1
dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGluX25v
dGVzLCBjb25zdCBkb3VibGUqIGluX3RpbWVzdGFtcCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiYmIGluX3ZhbHVlcywgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JW
YWx1ZSogaW5fcGF5bG9hZCwgY29uc3QgaW50KiBpbl9kYXRhYmFzZUlkLCBjb25zdCBSZWZQdHI8
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyog
aW5fc2NyZWVuQ29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYm
IGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBpbl9wcmludENvbG9yKSA9IDA7Ci0g
ICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5fY29sdW1uTmFtZXMs
IGNvbnN0IFN0cmluZyYgaW5fbm90ZXMsIGRvdWJsZSBpbl90aW1lc3RhbXAsIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBpbl92YWx1ZXMsIEluc3BlY3Rvcjo6SW5z
cGVjdG9yVmFsdWUgaW5fcGF5bG9hZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBp
bl9zY3JlZW5Db2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYg
aW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIGluX3ByaW50Q29sb3IpID0gMDsKKyAg
ICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwg
Y29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSogaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0
cmluZyogaW5fbm90ZXMsIGNvbnN0IGRvdWJsZSogaW5fdGltZXN0YW1wLCBjb25zdCBJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdCogaW5fdmFsdWVzLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rv
clZhbHVlKiBpbl9wYXlsb2FkLCBjb25zdCBpbnQqIGluX2RhdGFiYXNlSWQsIGNvbnN0IEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nKiBpbl9zY3Jl
ZW5Db2xvciwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSogaW5fYWx0ZXJuYXRlQ29s
b3JzLCBjb25zdCBTdHJpbmcqIGluX3ByaW50Q29sb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQg
ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3I6
Okluc3BlY3RvckFycmF5JiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBpbl9ub3Rlcywg
ZG91YmxlIGluX3RpbWVzdGFtcCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIGlu
X3ZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSBpbl9wYXlsb2FkLCBpbnQgaW5fZGF0
YWJhc2VJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIGluX3NxbEVycm9yLCBj
b25zdCBTdHJpbmcmIGluX3NjcmVlbkNvbG9yLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFy
cmF5JiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgaW5fcHJpbnRDb2xvcikgPSAw
OwogfTsKIAogfSAvLyBuYW1lc3BhY2UgSW5zcGVjdG9yCkBAIC0xNjEsOCArMTYxLDggQEAgcHVi
bGljOgogICAgICAgICBZZWxsb3cgPSA1LAogICAgICAgICBCbGFjayA9IDYsCiAgICAgfTsgLy8g
ZW51bSBjbGFzcyBQcmludENvbG9yCi0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVBbGxPcHRpb25h
bFBhcmFtZXRlcnMoRXJyb3JTdHJpbmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JBcnJheT4mJiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBpbl9ub3RlcywgY29uc3Qg
ZG91YmxlKiBpbl90aW1lc3RhbXAsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9i
amVjdD4mJiBpbl92YWx1ZXMsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIGluX3Bh
eWxvYWQsIGNvbnN0IGludCogaW5fZGF0YWJhc2VJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiYmIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIGluX3NjcmVlbkNv
bG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mJiBpbl9hbHRlcm5h
dGVDb2xvcnMsIGNvbnN0IFN0cmluZyogaW5fcHJpbnRDb2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiBvcHRfb3V0X2NvbHVtbk5hbWVzLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogb3B0X291dF9ub3RlcywgSW5zcGVjdG9yOjpQ
cm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIG9wdF9vdXRfdGltZXN0YW1wLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBvcHRfb3V0
X3ZhbHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6SW5zcGVj
dG9yVmFsdWU+KiBvcHRfb3V0X3BheWxvYWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1
dDxpbnQ+KiBvcHRfb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6RXJyb3I+JiBvcHRfb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3B0X291dF9zY3JlZW5Db2xvciwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvcHRfb3V0X2FsdGVybmF0ZUNv
bG9ycywgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3IqIG9wdF9v
dXRfcHJpbnRDb2xvcikgPSAwOwotICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlTm9PcHRpb25hbFBh
cmFtZXRlcnMoRXJyb3JTdHJpbmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JB
cnJheT4mJiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBpbl9ub3RlcywgZG91YmxlIGlu
X3RpbWVzdGFtcCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGlu
X3ZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSBpbl9wYXlsb2FkLCBpbnQgaW5fZGF0
YWJhc2VJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGluX3Nx
bEVycm9yLCBjb25zdCBTdHJpbmcmIGluX3NjcmVlbkNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JBcnJheT4mJiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYg
aW5fcHJpbnRDb2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+
JiBvdXRfY29sdW1uTmFtZXMsIFN0cmluZyogb3V0X25vdGVzLCBkb3VibGUqIG91dF90aW1lc3Rh
bXAsIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBvdXRfdmFsdWVzLCBJbnNwZWN0b3I6Oklu
c3BlY3RvclZhbHVlKiBvdXRfcGF5bG9hZCwgaW50KiBvdXRfZGF0YWJhc2VJZCwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4mIG91dF9zcWxFcnJvciwgSW5zcGVj
dG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMqIG91dF9zY3JlZW5Db2xvciwg
UmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvdXRfYWx0
ZXJuYXRlQ29sb3JzLCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xv
ciogb3V0X3ByaW50Q29sb3IpID0gMDsKKyAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9wdGlv
bmFsUGFyYW1ldGVycyhFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJy
YXkqIG9wdF9pbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBvcHRfaW5fbm90ZXMsIGNvbnN0
IGRvdWJsZSogb3B0X2luX3RpbWVzdGFtcCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3QqIG9wdF9pbl92YWx1ZXMsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIG9wdF9p
bl9wYXlsb2FkLCBjb25zdCBpbnQqIG9wdF9pbl9kYXRhYmFzZUlkLCBjb25zdCBJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdCogb3B0X2luX3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIG9wdF9pbl9z
Y3JlZW5Db2xvciwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSogb3B0X2luX2FsdGVy
bmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBvcHRfaW5fcHJpbnRDb2xvciwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiBvcHRfb3V0X2NvbHVtbk5hbWVzLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8U3RyaW5nPiogb3B0X291dF9ub3RlcywgSW5zcGVj
dG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJsZT4qIG9wdF9vdXRfdGltZXN0YW1wLCBJbnNw
ZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+KiBv
cHRfb3V0X3ZhbHVlcywgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PEluc3BlY3Rvcjo6
SW5zcGVjdG9yVmFsdWU+KiBvcHRfb3V0X3BheWxvYWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9w
dE91dHB1dDxpbnQ+KiBvcHRfb3V0X2RhdGFiYXNlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEYXRhYmFzZTo6RXJyb3I+JiBvcHRfb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3Rv
Y29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3B0X291dF9zY3JlZW5Db2xvciwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpDb2xvckxpc3Q+JiBvcHRfb3V0X2FsdGVy
bmF0ZUNvbG9ycywgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3Iq
IG9wdF9vdXRfcHJpbnRDb2xvcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlTm9PcHRp
b25hbFBhcmFtZXRlcnMoRXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFy
cmF5JiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBpbl9ub3RlcywgZG91YmxlIGluX3Rp
bWVzdGFtcCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIGluX3ZhbHVlcywgSW5z
cGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSBpbl9wYXlsb2FkLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29u
c3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcm
IGluX3NjcmVlbkNvbG9yLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5JiBpbl9hbHRl
cm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgaW5fcHJpbnRDb2xvciwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiBvdXRfY29sdW1uTmFtZXMsIFN0cmluZyogb3V0
X25vdGVzLCBkb3VibGUqIG91dF90aW1lc3RhbXAsIEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
KiBvdXRfdmFsdWVzLCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiBvdXRfcGF5bG9hZCwgaW50
KiBvdXRfZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpF
cnJvcj4mIG91dF9zcWxFcnJvciwgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1h
cnlDb2xvcnMqIG91dF9zY3JlZW5Db2xvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRh
dGFiYXNlOjpDb2xvckxpc3Q+JiBvdXRfYWx0ZXJuYXRlQ29sb3JzLCBEYXRhYmFzZUJhY2tlbmRE
aXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciogb3V0X3ByaW50Q29sb3IpID0gMDsKIHByb3Rl
Y3RlZDoKICAgICB2aXJ0dWFsIH5EYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcigpOwog
fTsKQEAgLTI2OCwyNiArMjY4LDI2IEBAIHZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6
ZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QKICAgICBhdXRv
IHByb3RvY29sRXJyb3JzID0gSW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPjo6Y3Jl
YXRlKCk7CiAgICAgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4gcGFyYW1zQ29udGFpbmVyOwogICAg
IG1lc3NhZ2UuZ2V0T2JqZWN0KEFTQ0lJTGl0ZXJhbCgicGFyYW1zIiksIHBhcmFtc0NvbnRhaW5l
cik7Ci0gICAgYm9vbCBjb2x1bW5OYW1lc192YWx1ZUZvdW5kID0gZmFsc2U7Ci0gICAgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+IGluX2NvbHVtbk5hbWVzID0gQmFja2VuZERpc3Bh
dGNoZXI6OmdldEFycmF5KHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJjb2x1
bW5OYW1lcyIpLCAmY29sdW1uTmFtZXNfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkp
OwotICAgIGJvb2wgbm90ZXNfdmFsdWVGb3VuZCA9IGZhbHNlOwotICAgIFN0cmluZyBpbl9ub3Rl
cyA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBB
U0NJSUxpdGVyYWwoIm5vdGVzIiksICZub3Rlc192YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5n
ZXQoKSk7Ci0gICAgYm9vbCB0aW1lc3RhbXBfdmFsdWVGb3VuZCA9IGZhbHNlOwotICAgIEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxkb3VibGU+IGluX3RpbWVzdGFtcCA9IEJhY2tlbmRE
aXNwYXRjaGVyOjpnZXREb3VibGUocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwo
InRpbWVzdGFtcCIpLCAmdGltZXN0YW1wX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLmdldCgp
KTsKLSAgICBib29sIHZhbHVlc192YWx1ZUZvdW5kID0gZmFsc2U7Ci0gICAgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBpbl92YWx1ZXMgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0
T2JqZWN0KHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgJnZh
bHVlc192YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7Ci0gICAgYm9vbCBwYXlsb2Fk
X3ZhbHVlRm91bmQgPSBmYWxzZTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1
ZT4gaW5fcGF5bG9hZCA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRWYWx1ZShwYXJhbXNDb250YWlu
ZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicGF5bG9hZCIpLCAmcGF5bG9hZF92YWx1ZUZvdW5kLCBw
cm90b2NvbEVycm9ycy5nZXQoKSk7Ci0gICAgYm9vbCBkYXRhYmFzZUlkX3ZhbHVlRm91bmQgPSBm
YWxzZTsKLSAgICBpbnQgaW5fZGF0YWJhc2VJZCA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRl
Z2VyKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksICZk
YXRhYmFzZUlkX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKLSAgICBib29sIHNx
bEVycm9yX3ZhbHVlRm91bmQgPSBmYWxzZTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+IGluX3NxbEVycm9yID0gQmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdChwYXJh
bXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgJnNxbEVycm9yX3Zh
bHVlRm91bmQsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKLSAgICBib29sIHNjcmVlbkNvbG9yX3Zh
bHVlRm91bmQgPSBmYWxzZTsKLSAgICBTdHJpbmcgaW5fc2NyZWVuQ29sb3IgPSBCYWNrZW5kRGlz
cGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJz
Y3JlZW5Db2xvciIpLCAmc2NyZWVuQ29sb3JfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0
KCkpOwotICAgIGJvb2wgYWx0ZXJuYXRlQ29sb3JzX3ZhbHVlRm91bmQgPSBmYWxzZTsKLSAgICBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4gaW5fYWx0ZXJuYXRlQ29sb3JzID0gQmFj
a2VuZERpc3BhdGNoZXI6OmdldEFycmF5KHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRl
cmFsKCJhbHRlcm5hdGVDb2xvcnMiKSwgJmFsdGVybmF0ZUNvbG9yc192YWx1ZUZvdW5kLCBwcm90
b2NvbEVycm9ycy5nZXQoKSk7Ci0gICAgYm9vbCBwcmludENvbG9yX3ZhbHVlRm91bmQgPSBmYWxz
ZTsKLSAgICBTdHJpbmcgaW5fcHJpbnRDb2xvciA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJp
bmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgJnBy
aW50Q29sb3JfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIGJvb2wgb3B0
X2luX2NvbHVtbk5hbWVzX3ZhbHVlRm91bmQgPSBmYWxzZTsKKyAgICBSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JBcnJheT4gb3B0X2luX2NvbHVtbk5hbWVzID0gQmFja2VuZERpc3BhdGNoZXI6
OmdldEFycmF5KHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJjb2x1bW5OYW1l
cyIpLCAmb3B0X2luX2NvbHVtbk5hbWVzX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLmdldCgp
KTsKKyAgICBib29sIG9wdF9pbl9ub3Rlc192YWx1ZUZvdW5kID0gZmFsc2U7CisgICAgU3RyaW5n
IG9wdF9pbl9ub3RlcyA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFp
bmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoIm5vdGVzIiksICZvcHRfaW5fbm90ZXNfdmFsdWVGb3Vu
ZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIGJvb2wgb3B0X2luX3RpbWVzdGFtcF92YWx1
ZUZvdW5kID0gZmFsc2U7CisgICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGRvdWJs
ZT4gb3B0X2luX3RpbWVzdGFtcCA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXREb3VibGUocGFyYW1z
Q29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInRpbWVzdGFtcCIpLCAmb3B0X2luX3RpbWVz
dGFtcF92YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgYm9vbCBvcHRfaW5f
dmFsdWVzX3ZhbHVlRm91bmQgPSBmYWxzZTsKKyAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+IG9wdF9pbl92YWx1ZXMgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0T2JqZWN0KHBh
cmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJ2YWx1ZXMiKSwgJm9wdF9pbl92YWx1
ZXNfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIGJvb2wgb3B0X2luX3Bh
eWxvYWRfdmFsdWVGb3VuZCA9IGZhbHNlOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
clZhbHVlPiBvcHRfaW5fcGF5bG9hZCA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRWYWx1ZShwYXJh
bXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicGF5bG9hZCIpLCAmb3B0X2luX3BheWxv
YWRfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIGJvb2wgb3B0X2luX2Rh
dGFiYXNlSWRfdmFsdWVGb3VuZCA9IGZhbHNlOworICAgIGludCBvcHRfaW5fZGF0YWJhc2VJZCA9
IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRJbnRlZ2VyKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVND
SUlMaXRlcmFsKCJkYXRhYmFzZUlkIiksICZvcHRfaW5fZGF0YWJhc2VJZF92YWx1ZUZvdW5kLCBw
cm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgYm9vbCBvcHRfaW5fc3FsRXJyb3JfdmFsdWVGb3Vu
ZCA9IGZhbHNlOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gb3B0X2lu
X3NxbEVycm9yID0gQmFja2VuZERpc3BhdGNoZXI6OmdldE9iamVjdChwYXJhbXNDb250YWluZXIu
Z2V0KCksIEFTQ0lJTGl0ZXJhbCgic3FsRXJyb3IiKSwgJm9wdF9pbl9zcWxFcnJvcl92YWx1ZUZv
dW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgYm9vbCBvcHRfaW5fc2NyZWVuQ29sb3Jf
dmFsdWVGb3VuZCA9IGZhbHNlOworICAgIFN0cmluZyBvcHRfaW5fc2NyZWVuQ29sb3IgPSBCYWNr
ZW5kRGlzcGF0Y2hlcjo6Z2V0U3RyaW5nKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRl
cmFsKCJzY3JlZW5Db2xvciIpLCAmb3B0X2luX3NjcmVlbkNvbG9yX3ZhbHVlRm91bmQsIHByb3Rv
Y29sRXJyb3JzLmdldCgpKTsKKyAgICBib29sIG9wdF9pbl9hbHRlcm5hdGVDb2xvcnNfdmFsdWVG
b3VuZCA9IGZhbHNlOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiBvcHRf
aW5fYWx0ZXJuYXRlQ29sb3JzID0gQmFja2VuZERpc3BhdGNoZXI6OmdldEFycmF5KHBhcmFtc0Nv
bnRhaW5lci5nZXQoKSwgQVNDSUlMaXRlcmFsKCJhbHRlcm5hdGVDb2xvcnMiKSwgJm9wdF9pbl9h
bHRlcm5hdGVDb2xvcnNfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIGJv
b2wgb3B0X2luX3ByaW50Q29sb3JfdmFsdWVGb3VuZCA9IGZhbHNlOworICAgIFN0cmluZyBvcHRf
aW5fcHJpbnRDb2xvciA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJpbmcocGFyYW1zQ29udGFp
bmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInByaW50Q29sb3IiKSwgJm9wdF9pbl9wcmludENvbG9y
X3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKICAgICBpZiAocHJvdG9jb2xFcnJv
cnMtPmxlbmd0aCgpKSB7CiAgICAgICAgIFN0cmluZyBlcnJvck1lc3NhZ2UgPSBTdHJpbmc6OmZv
cm1hdCgiU29tZSBhcmd1bWVudHMgb2YgbWV0aG9kICclcycgY2FuJ3QgYmUgcHJvY2Vzc2VkIiwg
IkRhdGFiYXNlLmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMiKTsKICAgICAgICAgbV9iYWNr
ZW5kRGlzcGF0Y2hlci0+cmVwb3J0UHJvdG9jb2xFcnJvcigmY2FsbElkLCBCYWNrZW5kRGlzcGF0
Y2hlcjo6SW52YWxpZFBhcmFtcywgZXJyb3JNZXNzYWdlLCBXVEY6Om1vdmUocHJvdG9jb2xFcnJv
cnMpKTsKQEAgLTI5Niw3ICsyOTYsNyBAQCB2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6
OmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0CiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICBpZiAobV9hbHRlcm5h
dGVEaXNwYXRjaGVyKSB7Ci0gICAgICAgIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci0+ZXhlY3V0ZUFs
bE9wdGlvbmFsUGFyYW1ldGVycyhjYWxsSWQsIGNvbHVtbk5hbWVzX3ZhbHVlRm91bmQgPyBpbl9j
b2x1bW5OYW1lcy5jb3B5UmVmKCkgOiBudWxscHRyLCBub3Rlc192YWx1ZUZvdW5kID8gJmluX25v
dGVzIDogbnVsbHB0ciwgdGltZXN0YW1wX3ZhbHVlRm91bmQgPyAmaW5fdGltZXN0YW1wIDogbnVs
bHB0ciwgdmFsdWVzX3ZhbHVlRm91bmQgPyBpbl92YWx1ZXMuY29weVJlZigpIDogbnVsbHB0ciwg
cGF5bG9hZF92YWx1ZUZvdW5kID8gaW5fcGF5bG9hZC5jb3B5UmVmKCkgOiBudWxscHRyLCBkYXRh
YmFzZUlkX3ZhbHVlRm91bmQgPyAmaW5fZGF0YWJhc2VJZCA6IG51bGxwdHIsIHNxbEVycm9yX3Zh
bHVlRm91bmQgPyBpbl9zcWxFcnJvci5jb3B5UmVmKCkgOiBudWxscHRyLCBzY3JlZW5Db2xvcl92
YWx1ZUZvdW5kID8gJmluX3NjcmVlbkNvbG9yIDogbnVsbHB0ciwgYWx0ZXJuYXRlQ29sb3JzX3Zh
bHVlRm91bmQgPyBpbl9hbHRlcm5hdGVDb2xvcnMuY29weVJlZigpIDogbnVsbHB0ciwgcHJpbnRD
b2xvcl92YWx1ZUZvdW5kID8gJmluX3ByaW50Q29sb3IgOiBudWxscHRyKTsKKyAgICAgICAgbV9h
bHRlcm5hdGVEaXNwYXRjaGVyLT5leGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGNhbGxJZCwg
b3B0X2luX2NvbHVtbk5hbWVzX3ZhbHVlRm91bmQgPyBvcHRfaW5fY29sdW1uTmFtZXMuZ2V0KCkg
OiBudWxscHRyLCBvcHRfaW5fbm90ZXNfdmFsdWVGb3VuZCA/ICZvcHRfaW5fbm90ZXMgOiBudWxs
cHRyLCBvcHRfaW5fdGltZXN0YW1wX3ZhbHVlRm91bmQgPyAmb3B0X2luX3RpbWVzdGFtcCA6IG51
bGxwdHIsIG9wdF9pbl92YWx1ZXNfdmFsdWVGb3VuZCA/IG9wdF9pbl92YWx1ZXMuZ2V0KCkgOiBu
dWxscHRyLCBvcHRfaW5fcGF5bG9hZF92YWx1ZUZvdW5kID8gb3B0X2luX3BheWxvYWQuZ2V0KCkg
OiBudWxscHRyLCBvcHRfaW5fZGF0YWJhc2VJZF92YWx1ZUZvdW5kID8gJm9wdF9pbl9kYXRhYmFz
ZUlkIDogbnVsbHB0ciwgb3B0X2luX3NxbEVycm9yX3ZhbHVlRm91bmQgPyBvcHRfaW5fc3FsRXJy
b3IuZ2V0KCkgOiBudWxscHRyLCBvcHRfaW5fc2NyZWVuQ29sb3JfdmFsdWVGb3VuZCA/ICZvcHRf
aW5fc2NyZWVuQ29sb3IgOiBudWxscHRyLCBvcHRfaW5fYWx0ZXJuYXRlQ29sb3JzX3ZhbHVlRm91
bmQgPyBvcHRfaW5fYWx0ZXJuYXRlQ29sb3JzLmdldCgpIDogbnVsbHB0ciwgb3B0X2luX3ByaW50
Q29sb3JfdmFsdWVGb3VuZCA/ICZvcHRfaW5fcHJpbnRDb2xvciA6IG51bGxwdHIpOwogICAgICAg
ICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC0zMTMsNyArMzEzLDcgQEAgdm9pZCBEYXRhYmFz
ZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2Fs
bElkLCBjb25zdAogICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29s
b3JzIG91dF9zY3JlZW5Db2xvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0
YWJhc2U6OkNvbG9yTGlzdD4gb3V0X2FsdGVybmF0ZUNvbG9yczsKICAgICBEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciBvdXRfcHJpbnRDb2xvcjsKLSAgICBtX2Fn
ZW50LT5leGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGVycm9yLCBjb2x1bW5OYW1lc192YWx1
ZUZvdW5kID8gaW5fY29sdW1uTmFtZXMuY29weVJlZigpIDogbnVsbHB0ciwgbm90ZXNfdmFsdWVG
b3VuZCA/ICZpbl9ub3RlcyA6IG51bGxwdHIsIHRpbWVzdGFtcF92YWx1ZUZvdW5kID8gJmluX3Rp
bWVzdGFtcCA6IG51bGxwdHIsIHZhbHVlc192YWx1ZUZvdW5kID8gaW5fdmFsdWVzLmNvcHlSZWYo
KSA6IG51bGxwdHIsIHBheWxvYWRfdmFsdWVGb3VuZCA/IGluX3BheWxvYWQuY29weVJlZigpIDog
bnVsbHB0ciwgZGF0YWJhc2VJZF92YWx1ZUZvdW5kID8gJmluX2RhdGFiYXNlSWQgOiBudWxscHRy
LCBzcWxFcnJvcl92YWx1ZUZvdW5kID8gaW5fc3FsRXJyb3IuY29weVJlZigpIDogbnVsbHB0ciwg
c2NyZWVuQ29sb3JfdmFsdWVGb3VuZCA/ICZpbl9zY3JlZW5Db2xvciA6IG51bGxwdHIsIGFsdGVy
bmF0ZUNvbG9yc192YWx1ZUZvdW5kID8gaW5fYWx0ZXJuYXRlQ29sb3JzLmNvcHlSZWYoKSA6IG51
bGxwdHIsIHByaW50Q29sb3JfdmFsdWVGb3VuZCA/ICZpbl9wcmludENvbG9yIDogbnVsbHB0ciwg
b3V0X2NvbHVtbk5hbWVzLCAmb3V0X25vdGVzLCAmb3V0X3RpbWVzdGFtcCwgb3V0X3ZhbHVlcywg
Jm91dF9wYXlsb2FkLCAmb3V0X2RhdGFiYXNlSWQsIG91dF9zcWxFcnJvciwgJm91dF9zY3JlZW5D
b2xvciwgb3V0X2FsdGVybmF0ZUNvbG9ycywgJm91dF9wcmludENvbG9yKTsKKyAgICBtX2FnZW50
LT5leGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGVycm9yLCBvcHRfaW5fY29sdW1uTmFtZXNf
dmFsdWVGb3VuZCA/IG9wdF9pbl9jb2x1bW5OYW1lcy5nZXQoKSA6IG51bGxwdHIsIG9wdF9pbl9u
b3Rlc192YWx1ZUZvdW5kID8gJm9wdF9pbl9ub3RlcyA6IG51bGxwdHIsIG9wdF9pbl90aW1lc3Rh
bXBfdmFsdWVGb3VuZCA/ICZvcHRfaW5fdGltZXN0YW1wIDogbnVsbHB0ciwgb3B0X2luX3ZhbHVl
c192YWx1ZUZvdW5kID8gb3B0X2luX3ZhbHVlcy5nZXQoKSA6IG51bGxwdHIsIG9wdF9pbl9wYXls
b2FkX3ZhbHVlRm91bmQgPyBvcHRfaW5fcGF5bG9hZC5nZXQoKSA6IG51bGxwdHIsIG9wdF9pbl9k
YXRhYmFzZUlkX3ZhbHVlRm91bmQgPyAmb3B0X2luX2RhdGFiYXNlSWQgOiBudWxscHRyLCBvcHRf
aW5fc3FsRXJyb3JfdmFsdWVGb3VuZCA/IG9wdF9pbl9zcWxFcnJvci5nZXQoKSA6IG51bGxwdHIs
IG9wdF9pbl9zY3JlZW5Db2xvcl92YWx1ZUZvdW5kID8gJm9wdF9pbl9zY3JlZW5Db2xvciA6IG51
bGxwdHIsIG9wdF9pbl9hbHRlcm5hdGVDb2xvcnNfdmFsdWVGb3VuZCA/IG9wdF9pbl9hbHRlcm5h
dGVDb2xvcnMuZ2V0KCkgOiBudWxscHRyLCBvcHRfaW5fcHJpbnRDb2xvcl92YWx1ZUZvdW5kID8g
Jm9wdF9pbl9wcmludENvbG9yIDogbnVsbHB0ciwgb3V0X2NvbHVtbk5hbWVzLCAmb3V0X25vdGVz
LCAmb3V0X3RpbWVzdGFtcCwgb3V0X3ZhbHVlcywgJm91dF9wYXlsb2FkLCAmb3V0X2RhdGFiYXNl
SWQsIG91dF9zcWxFcnJvciwgJm91dF9zY3JlZW5Db2xvciwgb3V0X2FsdGVybmF0ZUNvbG9ycywg
Jm91dF9wcmludENvbG9yKTsKIAogICAgIGlmICghZXJyb3IubGVuZ3RoKCkpIHsKICAgICAgICAg
aWYgKG91dF9jb2x1bW5OYW1lcykKQEAgLTM2Myw3ICszNjMsNyBAQCB2b2lkIERhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwg
Y29uc3QgSQogCiAjaWYgRU5BQkxFKElOU1BFQ1RPUl9BTFRFUk5BVEVfRElTUEFUQ0hFUlMpCiAg
ICAgaWYgKG1fYWx0ZXJuYXRlRGlzcGF0Y2hlcikgewotICAgICAgICBtX2FsdGVybmF0ZURpc3Bh
dGNoZXItPmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhjYWxsSWQsIGluX2NvbHVtbk5hbWVz
LmNvcHlSZWYoKSwgaW5fbm90ZXMsIGluX3RpbWVzdGFtcCwgaW5fdmFsdWVzLmNvcHlSZWYoKSwg
aW5fcGF5bG9hZC5jb3B5UmVmKCksIGluX2RhdGFiYXNlSWQsIGluX3NxbEVycm9yLmNvcHlSZWYo
KSwgaW5fc2NyZWVuQ29sb3IsIGluX2FsdGVybmF0ZUNvbG9ycy5jb3B5UmVmKCksIGluX3ByaW50
Q29sb3IpOworICAgICAgICBtX2FsdGVybmF0ZURpc3BhdGNoZXItPmV4ZWN1dGVOb09wdGlvbmFs
UGFyYW1ldGVycyhjYWxsSWQsICppbl9jb2x1bW5OYW1lcywgaW5fbm90ZXMsIGluX3RpbWVzdGFt
cCwgKmluX3ZhbHVlcywgKmluX3BheWxvYWQsIGluX2RhdGFiYXNlSWQsICppbl9zcWxFcnJvciwg
aW5fc2NyZWVuQ29sb3IsICppbl9hbHRlcm5hdGVDb2xvcnMsIGluX3ByaW50Q29sb3IpOwogICAg
ICAgICByZXR1cm47CiAgICAgfQogI2VuZGlmCkBAIC0zODAsNyArMzgwLDcgQEAgdm9pZCBEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnMobG9uZyBj
YWxsSWQsIGNvbnN0IEkKICAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFy
eUNvbG9ycyBvdXRfc2NyZWVuQ29sb3I7CiAgICAgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRhdGFiYXNlOjpDb2xvckxpc3Q+IG91dF9hbHRlcm5hdGVDb2xvcnM7CiAgICAgRGF0YWJhc2VC
YWNrZW5kRGlzcGF0Y2hlckhhbmRsZXI6OlByaW50Q29sb3Igb3V0X3ByaW50Q29sb3I7Ci0gICAg
bV9hZ2VudC0+ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGVycm9yLCBpbl9jb2x1bW5OYW1l
cy5jb3B5UmVmKCksIGluX25vdGVzLCBpbl90aW1lc3RhbXAsIGluX3ZhbHVlcy5jb3B5UmVmKCks
IGluX3BheWxvYWQuY29weVJlZigpLCBpbl9kYXRhYmFzZUlkLCBpbl9zcWxFcnJvci5jb3B5UmVm
KCksIGluX3NjcmVlbkNvbG9yLCBpbl9hbHRlcm5hdGVDb2xvcnMuY29weVJlZigpLCBpbl9wcmlu
dENvbG9yLCBvdXRfY29sdW1uTmFtZXMsICZvdXRfbm90ZXMsICZvdXRfdGltZXN0YW1wLCBvdXRf
dmFsdWVzLCAmb3V0X3BheWxvYWQsICZvdXRfZGF0YWJhc2VJZCwgb3V0X3NxbEVycm9yLCAmb3V0
X3NjcmVlbkNvbG9yLCBvdXRfYWx0ZXJuYXRlQ29sb3JzLCAmb3V0X3ByaW50Q29sb3IpOworICAg
IG1fYWdlbnQtPmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhlcnJvciwgKmluX2NvbHVtbk5h
bWVzLCBpbl9ub3RlcywgaW5fdGltZXN0YW1wLCAqaW5fdmFsdWVzLCAqaW5fcGF5bG9hZCwgaW5f
ZGF0YWJhc2VJZCwgKmluX3NxbEVycm9yLCBpbl9zY3JlZW5Db2xvciwgKmluX2FsdGVybmF0ZUNv
bG9ycywgaW5fcHJpbnRDb2xvciwgb3V0X2NvbHVtbk5hbWVzLCAmb3V0X25vdGVzLCAmb3V0X3Rp
bWVzdGFtcCwgb3V0X3ZhbHVlcywgJm91dF9wYXlsb2FkLCAmb3V0X2RhdGFiYXNlSWQsIG91dF9z
cWxFcnJvciwgJm91dF9zY3JlZW5Db2xvciwgb3V0X2FsdGVybmF0ZUNvbG9ycywgJm91dF9wcmlu
dENvbG9yKTsKIAogICAgIGlmICghZXJyb3IubGVuZ3RoKCkpIHsKICAgICAgICAgcmVzdWx0LT5z
ZXRBcnJheShBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksIG91dF9jb2x1bW5OYW1lcyk7CkBA
IC03NDQsOCArNzQ0LDggQEAgbmFtZXNwYWNlIEluc3BlY3RvciB7CiBjbGFzcyBPYmpDSW5zcGVj
dG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlciBmaW5hbCA6IHB1YmxpYyBBbHRlcm5hdGVEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVyIHsKIHB1YmxpYzoKICAgICBPYmpDSW5zcGVjdG9yRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlcihpZDxSV0lQcm90b2NvbERhdGFiYXNlRG9tYWluSGFuZGxlcj4g
aGFuZGxlcikgeyBtX2RlbGVnYXRlID0gaGFuZGxlcjsgfQotICAgIHZpcnR1YWwgdm9pZCBleGVj
dXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JBcnJheT4mJiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBpbl9u
b3RlcywgY29uc3QgZG91YmxlKiBpbl90aW1lc3RhbXAsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4mJiBpbl92YWx1ZXMsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9y
VmFsdWUqIGluX3BheWxvYWQsIGNvbnN0IGludCogaW5fZGF0YWJhc2VJZCwgY29uc3QgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcq
IGluX3NjcmVlbkNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4m
JiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyogaW5fcHJpbnRDb2xvcikgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNh
bGxJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5fY29sdW1u
TmFtZXMsIGNvbnN0IFN0cmluZyYgaW5fbm90ZXMsIGRvdWJsZSBpbl90aW1lc3RhbXAsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBpbl92YWx1ZXMsIEluc3BlY3Rv
cjo6SW5zcGVjdG9yVmFsdWUgaW5fcGF5bG9hZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBpbl9zcWxFcnJvciwgY29uc3QgU3Ry
aW5nJiBpbl9zY3JlZW5Db2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJy
YXk+JiYgaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIGluX3ByaW50Q29sb3IpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxv
bmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5KiBpbl9jb2x1bW5OYW1l
cywgY29uc3QgU3RyaW5nKiBpbl9ub3RlcywgY29uc3QgZG91YmxlKiBpbl90aW1lc3RhbXAsIGNv
bnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBpbl92YWx1ZXMsIGNvbnN0IEluc3BlY3Rv
cjo6SW5zcGVjdG9yVmFsdWUqIGluX3BheWxvYWQsIGNvbnN0IGludCogaW5fZGF0YWJhc2VJZCwg
Y29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGluX3NxbEVycm9yLCBjb25zdCBTdHJp
bmcqIGluX3NjcmVlbkNvbG9yLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5KiBpbl9h
bHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyogaW5fcHJpbnRDb2xvcikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwg
Y29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYgaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0
cmluZyYgaW5fbm90ZXMsIGRvdWJsZSBpbl90aW1lc3RhbXAsIGNvbnN0IEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0JiBpbl92YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUgaW5fcGF5
bG9hZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
JiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBpbl9zY3JlZW5Db2xvciwgY29uc3QgSW5zcGVj
dG9yOjpJbnNwZWN0b3JBcnJheSYgaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIGlu
X3ByaW50Q29sb3IpIG92ZXJyaWRlOwogcHJpdmF0ZToKICAgICBSZXRhaW5QdHI8aWQ8UldJUHJv
dG9jb2xEYXRhYmFzZURvbWFpbkhhbmRsZXI+PiBtX2RlbGVnYXRlOwogfTsKQEAgLTkyNCw3ICs5
MjQsNyBAQCBfX2F0dHJpYnV0ZV9fKCh2aXNpYmlsaXR5ICgiZGVmYXVsdCIpKSkKIAogbmFtZXNw
YWNlIEluc3BlY3RvciB7CiAKLXZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI6OmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2NvbHVtbk5hbWVzLCBjb25zdCBT
dHJpbmcqIGluX25vdGVzLCBjb25zdCBkb3VibGUqIGluX3RpbWVzdGFtcCwgY29uc3QgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGluX3ZhbHVlcywgY29uc3QgSW5zcGVjdG9y
OjpJbnNwZWN0b3JWYWx1ZSogaW5fcGF5bG9hZCwgY29uc3QgaW50KiBpbl9kYXRhYmFzZUlkLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fc3FsRXJyb3IsIGNv
bnN0IFN0cmluZyogaW5fc2NyZWVuQ29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3RvckFycmF5PiYmIGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nKiBpbl9wcmludENv
bG9yKQordm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0
ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JBcnJheSogaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogaW5fbm90ZXMsIGNvbnN0
IGRvdWJsZSogaW5fdGltZXN0YW1wLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCog
aW5fdmFsdWVzLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiBpbl9wYXlsb2FkLCBj
b25zdCBpbnQqIGluX2RhdGFiYXNlSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
KiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nKiBpbl9zY3JlZW5Db2xvciwgY29uc3QgSW5zcGVj
dG9yOjpJbnNwZWN0b3JBcnJheSogaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIGlu
X3ByaW50Q29sb3IpCiB7CiAgICAgaWQgZXJyb3JDYWxsYmFjayA9IF4oTlNTdHJpbmcgKmVycm9y
KSB7CiAgICAgICAgIGJhY2tlbmREaXNwYXRjaGVyKCktPnNlbmRSZXNwb25zZShjYWxsSWQsIElu
c3BlY3Rvck9iamVjdDo6Y3JlYXRlKCksIGVycm9yKTsKQEAgLTk5NSw3ICs5OTUsNyBAQCB2b2lk
IE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9u
YWxQYXJhbWV0ZXJzKGxvbmcgYwogICAgIFttX2RlbGVnYXRlIGV4ZWN1dGVBbGxPcHRpb25hbFBh
cmFtZXRlcnNXaXRoRXJyb3JDYWxsYmFjazplcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazpz
dWNjZXNzQ2FsbGJhY2sgY29sdW1uTmFtZXM6KGluX2NvbHVtbk5hbWVzID8gJm9faW5fY29sdW1u
TmFtZXMgOiBuaWwpIG5vdGVzOihpbl9ub3RlcyA/ICZvX2luX25vdGVzIDogbmlsKSB0aW1lc3Rh
bXA6KGluX3RpbWVzdGFtcCA/ICZvX2luX3RpbWVzdGFtcCA6IG5pbCkgdmFsdWVzOihpbl92YWx1
ZXMgPyAmb19pbl92YWx1ZXMgOiBuaWwpIHBheWxvYWQ6KGluX3BheWxvYWQgPyAmb19pbl9wYXls
b2FkIDogbmlsKSBkYXRhYmFzZUlkOihpbl9kYXRhYmFzZUlkID8gJm9faW5fZGF0YWJhc2VJZCA6
IG5pbCkgc3FsRXJyb3I6KGluX3NxbEVycm9yID8gJm9faW5fc3FsRXJyb3IgOiBuaWwpIHNjcmVl
bkNvbG9yOihpbl9zY3JlZW5Db2xvciA/ICZvX2luX3NjcmVlbkNvbG9yIDogbmlsKSBhbHRlcm5h
dGVDb2xvcnM6KGluX2FsdGVybmF0ZUNvbG9ycyA/ICZvX2luX2FsdGVybmF0ZUNvbG9ycyA6IG5p
bCkgcHJpbnRDb2xvcjooaW5fcHJpbnRDb2xvciA/ICZvX2luX3ByaW50Q29sb3IgOiBuaWwpXTsK
IH0KIAotdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0
ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JBcnJheT4mJiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBpbl9ub3Rl
cywgZG91YmxlIGluX3RpbWVzdGFtcCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0PiYmIGluX3ZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSBpbl9wYXlsb2Fk
LCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiYmIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcmIGluX3NjcmVlbkNvbG9yLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mJiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNv
bnN0IFN0cmluZyYgaW5fcHJpbnRDb2xvcikKK3ZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFj
a2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwg
Y29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYgaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0
cmluZyYgaW5fbm90ZXMsIGRvdWJsZSBpbl90aW1lc3RhbXAsIGNvbnN0IEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0JiBpbl92YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUgaW5fcGF5
bG9hZCwgaW50IGluX2RhdGFiYXNlSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
JiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nJiBpbl9zY3JlZW5Db2xvciwgY29uc3QgSW5zcGVj
dG9yOjpJbnNwZWN0b3JBcnJheSYgaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIGlu
X3ByaW50Q29sb3IpCiB7CiAgICAgaWQgZXJyb3JDYWxsYmFjayA9IF4oTlNTdHJpbmcgKmVycm9y
KSB7CiAgICAgICAgIGJhY2tlbmREaXNwYXRjaGVyKCktPnNlbmRSZXNwb25zZShjYWxsSWQsIElu
c3BlY3Rvck9iamVjdDo6Y3JlYXRlKCksIGVycm9yKTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3BwCmluZGV4IDg1MzIxZGQ3ZGQyZjc4YmVhOTllNTJl
MmY3NjBlMDdlMjk4ODA0YWMuLmE5MDgzZDA4MTQyN2I5YzAxOTE4OWU2YzQ5YjgxNDYyZWYzNjM1
OWUgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2Vu
dC5jcHAKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNw
cApAQCAtNzIsMTggKzcyLDE4IEBAIGVudW0gRm9yY2VQc2V1ZG9DbGFzc0ZsYWdzIHsKICAgICBQ
c2V1ZG9DbGFzc1Zpc2l0ZWQgPSAxIDw8IDMKIH07CiAKLXN0YXRpYyB1bnNpZ25lZCBjb21wdXRl
UHNldWRvQ2xhc3NNYXNrKEluc3BlY3RvckFycmF5KiBwc2V1ZG9DbGFzc0FycmF5KQorc3RhdGlj
IHVuc2lnbmVkIGNvbXB1dGVQc2V1ZG9DbGFzc01hc2soY29uc3QgSW5zcGVjdG9yQXJyYXkmIHBz
ZXVkb0NsYXNzQXJyYXkpCiB7CiAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0
cmluZywgYWN0aXZlLCAoQVNDSUlMaXRlcmFsKCJhY3RpdmUiKSkpOwogICAgIERFUFJFQ0FURURf
REVGSU5FX1NUQVRJQ19MT0NBTChTdHJpbmcsIGhvdmVyLCAoQVNDSUlMaXRlcmFsKCJob3ZlciIp
KSk7CiAgICAgREVQUkVDQVRFRF9ERUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgZm9jdXMsIChB
U0NJSUxpdGVyYWwoImZvY3VzIikpKTsKICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9D
QUwoU3RyaW5nLCB2aXNpdGVkLCAoQVNDSUlMaXRlcmFsKCJ2aXNpdGVkIikpKTsKLSAgICBpZiAo
IXBzZXVkb0NsYXNzQXJyYXkgfHwgIXBzZXVkb0NsYXNzQXJyYXktPmxlbmd0aCgpKQorICAgIGlm
ICghcHNldWRvQ2xhc3NBcnJheS5sZW5ndGgoKSkKICAgICAgICAgcmV0dXJuIFBzZXVkb0NsYXNz
Tm9uZTsKIAogICAgIHVuc2lnbmVkIHJlc3VsdCA9IFBzZXVkb0NsYXNzTm9uZTsKLSAgICBmb3Ig
KHNpemVfdCBpID0gMDsgaSA8IHBzZXVkb0NsYXNzQXJyYXktPmxlbmd0aCgpOyArK2kpIHsKLSAg
ICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBwc2V1ZG9DbGFzc1ZhbHVlID0gcHNldWRvQ2xh
c3NBcnJheS0+Z2V0KGkpOworICAgIGZvciAoc2l6ZV90IGkgPSAwOyBpIDwgcHNldWRvQ2xhc3NB
cnJheS5sZW5ndGgoKTsgKytpKSB7CisgICAgICAgIFJlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gcHNl
dWRvQ2xhc3NWYWx1ZSA9IHBzZXVkb0NsYXNzQXJyYXkuZ2V0KGkpOwogICAgICAgICBTdHJpbmcg
cHNldWRvQ2xhc3M7CiAgICAgICAgIGJvb2wgc3VjY2VzcyA9IHBzZXVkb0NsYXNzVmFsdWUtPmFz
U3RyaW5nKHBzZXVkb0NsYXNzKTsKICAgICAgICAgaWYgKCFzdWNjZXNzKQpAQCAtNjI0LDkgKzYy
NCw5IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFN0eWxlU2hlZXRUZXh0KEVycm9yU3Ry
aW5nJiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nCiAgICAgZXJyb3JTdHJpbmcgPSBJbnNwZWN0
b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhlYyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdl
bnQ6OnNldFN0eWxlVGV4dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3JPYmplY3Q+JiYgZnVsbFN0eWxlSWQsIGNvbnN0IFN0cmluZyYgdGV4dCwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpCit2b2lkIEluc3Bl
Y3RvckNTU0FnZW50OjpzZXRTdHlsZVRleHQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25z
dCBJbnNwZWN0b3JPYmplY3QmIGZ1bGxTdHlsZUlkLCBjb25zdCBTdHJpbmcmIHRleHQsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KQogewotICAgIElu
c3BlY3RvckNTU0lkIGNvbXBvdW5kSWQoZnVsbFN0eWxlSWQuY29weVJlZigpKTsKKyAgICBJbnNw
ZWN0b3JDU1NJZCBjb21wb3VuZElkKGZ1bGxTdHlsZUlkKTsKICAgICBBU1NFUlQoIWNvbXBvdW5k
SWQuaXNFbXB0eSgpKTsKIAogICAgIEluc3BlY3RvclN0eWxlU2hlZXQqIGluc3BlY3RvclN0eWxl
U2hlZXQgPSBhc3NlcnRTdHlsZVNoZWV0Rm9ySWQoZXJyb3JTdHJpbmcsIGNvbXBvdW5kSWQuc3R5
bGVTaGVldElkKCkpOwpAQCAtNjQwLDkgKzY0MCw5IEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6
OnNldFN0eWxlVGV4dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNw
CiAgICAgZXJyb3JTdHJpbmcgPSBJbnNwZWN0b3JET01BZ2VudDo6dG9FcnJvclN0cmluZyhlYyk7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1bGVTZWxlY3RvcihFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgZnVsbFJ1bGVJ
ZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNT
Uzo6Q1NTUnVsZT4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1bGVTZWxl
Y3RvcihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgZnVs
bFJ1bGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCkKIHsKLSAgICBJbnNwZWN0b3JDU1NJZCBjb21wb3Vu
ZElkKGZ1bGxSdWxlSWQuY29weVJlZigpKTsKKyAgICBJbnNwZWN0b3JDU1NJZCBjb21wb3VuZElk
KGZ1bGxSdWxlSWQpOwogICAgIEFTU0VSVCghY29tcG91bmRJZC5pc0VtcHR5KCkpOwogCiAgICAg
SW5zcGVjdG9yU3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVTaGVldCA9IGFzc2VydFN0eWxlU2hl
ZXRGb3JJZChlcnJvclN0cmluZywgY29tcG91bmRJZC5zdHlsZVNoZWV0SWQoKSk7CkBAIC03MDgs
MTMgKzcwOCwxMyBAQCB2b2lkIEluc3BlY3RvckNTU0FnZW50OjpnZXRTdXBwb3J0ZWRDU1NQcm9w
ZXJ0aWVzKEVycm9yU3RyaW5nJiwgUmVmUHRyPEluc3BlY3RvcgogICAgIGNzc1Byb3BlcnRpZXMg
PSBXVEY6Om1vdmUocHJvcGVydGllcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmZv
cmNlUHNldWRvU3RhdGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBpbnQgbm9kZUlkLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiYgZm9yY2VkUHNldWRvQ2xhc3NlcykKK3ZvaWQgSW5z
cGVjdG9yQ1NTQWdlbnQ6OmZvcmNlUHNldWRvU3RhdGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5n
LCBpbnQgbm9kZUlkLCBjb25zdCBJbnNwZWN0b3JBcnJheSYgZm9yY2VkUHNldWRvQ2xhc3NlcykK
IHsKICAgICBFbGVtZW50KiBlbGVtZW50ID0gbV9kb21BZ2VudC0+YXNzZXJ0RWxlbWVudChlcnJv
clN0cmluZywgbm9kZUlkKTsKICAgICBpZiAoIWVsZW1lbnQpCiAgICAgICAgIHJldHVybjsKIAot
ICAgIHVuc2lnbmVkIGZvcmNlZFBzZXVkb1N0YXRlID0gY29tcHV0ZVBzZXVkb0NsYXNzTWFzayhm
b3JjZWRQc2V1ZG9DbGFzc2VzLmdldCgpKTsKKyAgICB1bnNpZ25lZCBmb3JjZWRQc2V1ZG9TdGF0
ZSA9IGNvbXB1dGVQc2V1ZG9DbGFzc01hc2soZm9yY2VkUHNldWRvQ2xhc3Nlcyk7CiAgICAgTm9k
ZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZTo6aXRlcmF0b3IgaXQgPSBtX25vZGVJZFRvRm9yY2VkUHNl
dWRvU3RhdGUuZmluZChub2RlSWQpOwogICAgIHVuc2lnbmVkIGN1cnJlbnRGb3JjZWRQc2V1ZG9T
dGF0ZSA9IGl0ID09IG1fbm9kZUlkVG9Gb3JjZWRQc2V1ZG9TdGF0ZS5lbmQoKSA/IDAgOiBpdC0+
dmFsdWU7CiAgICAgYm9vbCBuZWVkU3R5bGVSZWNhbGMgPSBmb3JjZWRQc2V1ZG9TdGF0ZSAhPSBj
dXJyZW50Rm9yY2VkUHNldWRvU3RhdGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JDU1NBZ2VudC5oCmluZGV4IGU0YTYwMzc5NTRjMWEyNzBjN2JjOGQ4NTVhZmNiZWZlNzBm
ZmI3MTAuLmE2MzBmZTU2NzJhMGM4YjRlNjI2MWYyNGI2NTA1NzI2NWIwNmQ1MTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC0xMTUsMTEgKzEx
NSwxMSBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFN0eWxlU2hlZXQoRXJyb3JTdHJp
bmcmLCBjb25zdCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkNTUzo6Q1NTU3R5bGVTaGVldEJvZHk+JiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBnZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc3R5
bGVTaGVldElkLCBTdHJpbmcqIHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNl
dFN0eWxlU2hlZXRUZXh0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQs
IGNvbnN0IFN0cmluZyYgdGV4dCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFN0eWxl
VGV4dChFcnJvclN0cmluZyYsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4mJiBzdHlsZUlkLCBjb25zdCBTdHJpbmcmIHRleHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
c2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiYmIHJ1bGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAg
dmlydHVhbCB2b2lkIHNldFN0eWxlVGV4dChFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0JiBzdHlsZUlkLCBjb25zdCBTdHJpbmcmIHRleHQsIFJlZlB0cjxJbnNw
ZWN0b3I6OlByb3RvY29sOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgc2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3QmIHJ1bGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCkgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGFkZFJ1bGUoRXJyb3JTdHJpbmcmLCBpbnQgY29udGV4dE5vZGVJZCwg
Y29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTUnVsZT4mIHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGdldFN1cHBvcnRl
ZENTU1Byb3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiYgcmVzdWx0
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZm9yY2VQc2V1ZG9TdGF0ZShFcnJvclN0cmlu
ZyYsIGludCBub2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYm
IGZvcmNlZFBzZXVkb0NsYXNzZXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBmb3JjZVBz
ZXVkb1N0YXRlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JBcnJheSYgZm9yY2VkUHNldWRvQ2xhc3Nlcykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIGdldE5hbWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcmLCBpbnQgZG9jdW1lbnROb2Rl
SWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpDU1M6Ok5hbWVkRmxvdz4+JiByZXN1bHQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0t
Z2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1Nv
dXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggYzg3NDcx
NTYzYTc1ZDAzNzIwZDNjNWYwMWVjNzkyN2QyMmE3OTkxNS4uN2ZhNDJiYmYyZTBjZGY0NGQyYzZj
N2FkNzUwN2U2Y2U2NzI0NmU3NCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NQWdlbnQuY3BwCkBAIC0xMDMsNyArMTAzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhU
TUxOYW1lczsKIHN0YXRpYyBjb25zdCBzaXplX3QgbWF4VGV4dFNpemUgPSAxMDAwMDsKIHN0YXRp
YyBjb25zdCBVQ2hhciBlbGxpcHNpc1VDaGFyW10gPSB7IDB4MjAyNiwgMCB9OwogCi1zdGF0aWMg
Q29sb3IgcGFyc2VDb2xvcihjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGNvbG9yT2Jq
ZWN0KQorc3RhdGljIENvbG9yIHBhcnNlQ29sb3IoY29uc3QgSW5zcGVjdG9yT2JqZWN0KiBjb2xv
ck9iamVjdCkKIHsKICAgICBpZiAoIWNvbG9yT2JqZWN0KQogICAgICAgICByZXR1cm4gQ29sb3I6
OnRyYW5zcGFyZW50OwpAQCAtMTI3LDIzICsxMjcsMjIgQEAgc3RhdGljIENvbG9yIHBhcnNlQ29s
b3IoY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBjb2xvck9iamVjdCkKICAgICByZXR1
cm4gQ29sb3IociwgZywgYiwgc3RhdGljX2Nhc3Q8aW50PihhICogMjU1KSk7CiB9CiAKLXN0YXRp
YyBDb2xvciBwYXJzZUNvbmZpZ0NvbG9yKGNvbnN0IFN0cmluZyYgZmllbGROYW1lLCBJbnNwZWN0
b3JPYmplY3QqIGNvbmZpZ09iamVjdCkKK3N0YXRpYyBDb2xvciBwYXJzZUNvbmZpZ0NvbG9yKGNv
bnN0IFN0cmluZyYgZmllbGROYW1lLCBjb25zdCBJbnNwZWN0b3JPYmplY3QqIGNvbmZpZ09iamVj
dCkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBjb2xvck9iamVjdDsKICAgICBjb25m
aWdPYmplY3QtPmdldE9iamVjdChmaWVsZE5hbWUsIGNvbG9yT2JqZWN0KTsKLSAgICByZXR1cm4g
cGFyc2VDb2xvcihXVEY6Om1vdmUoY29sb3JPYmplY3QpKTsKKworICAgIHJldHVybiBwYXJzZUNv
bG9yKGNvbG9yT2JqZWN0LmdldCgpKTsKIH0KIAotc3RhdGljIGJvb2wgcGFyc2VRdWFkKGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mIHF1YWRBcnJheSwgRmxvYXRRdWFkKiBxdWFkKQorc3Rh
dGljIGJvb2wgcGFyc2VRdWFkKGNvbnN0IEluc3BlY3RvckFycmF5JiBxdWFkQXJyYXksIEZsb2F0
UXVhZCogcXVhZCkKIHsKLSAgICBpZiAoIXF1YWRBcnJheSkKLSAgICAgICAgcmV0dXJuIGZhbHNl
OwogICAgIGNvbnN0IHNpemVfdCBjb29yZGluYXRlc0luUXVhZCA9IDg7CiAgICAgZG91YmxlIGNv
b3JkaW5hdGVzW2Nvb3JkaW5hdGVzSW5RdWFkXTsKLSAgICBpZiAocXVhZEFycmF5LT5sZW5ndGgo
KSAhPSBjb29yZGluYXRlc0luUXVhZCkKKyAgICBpZiAocXVhZEFycmF5Lmxlbmd0aCgpICE9IGNv
b3JkaW5hdGVzSW5RdWFkKQogICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZm9yIChzaXplX3Qg
aSA9IDA7IGkgPCBjb29yZGluYXRlc0luUXVhZDsgKytpKSB7Ci0gICAgICAgIGlmICghcXVhZEFy
cmF5LT5nZXQoaSktPmFzRG91YmxlKCooY29vcmRpbmF0ZXMgKyBpKSkpCisgICAgICAgIGlmICgh
cXVhZEFycmF5LmdldChpKS0+YXNEb3VibGUoKihjb29yZGluYXRlcyArIGkpKSkKICAgICAgICAg
ICAgIHJldHVybiBmYWxzZTsKICAgICB9CiAgICAgcXVhZC0+c2V0UDEoRmxvYXRQb2ludChjb29y
ZGluYXRlc1swXSwgY29vcmRpbmF0ZXNbMV0pKTsKQEAgLTg3NCw3ICs4NzMsNyBAQCB2b2lkIElu
c3BlY3RvckRPTUFnZW50OjpnZXRBY2Nlc3NpYmlsaXR5UHJvcGVydGllc0Zvck5vZGUoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaQogICAgIGF4UHJvcGVydGllcyA9IGJ1aWxkT2JqZWN0Rm9yQWNjZXNz
aWJpbGl0eVByb3BlcnRpZXMobm9kZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBl
cmZvcm1TZWFyY2goRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHdoaXRl
c3BhY2VUcmltbWVkUXVlcnksIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mJiBub2RlSWRz
LCBTdHJpbmcqIHNlYXJjaElkLCBpbnQqIHJlc3VsdENvdW50KQordm9pZCBJbnNwZWN0b3JET01B
Z2VudDo6cGVyZm9ybVNlYXJjaChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmlu
ZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgY29uc3QgSW5zcGVjdG9yQXJyYXkqIG5vZGVJZHMs
IFN0cmluZyogc2VhcmNoSWQsIGludCogcmVzdWx0Q291bnQpCiB7CiAgICAgLy8gRklYTUU6IFNl
YXJjaCB3b3JrcyB3aXRoIG5vZGUgZ3JhbnVsYXJpdHkgLSBudW1iZXIgb2YgbWF0Y2hlcyB3aXRo
aW4gbm9kZSBpcyBub3QgY2FsY3VsYXRlZC4KICAgICBJbnNwZWN0b3JOb2RlRmluZGVyIGZpbmRl
cih3aGl0ZXNwYWNlVHJpbW1lZFF1ZXJ5KTsKQEAgLTEwMTIsNyArMTAxMSw3IEBAIHZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6Om1vdXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1
bHQmIHJlc3VsdCwgdW5zCiAgICAgICAgIG1fb3ZlcmxheS0+aGlnaGxpZ2h0Tm9kZShub2RlLCAq
bV9pbnNwZWN0TW9kZUhpZ2hsaWdodENvbmZpZyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdl
bnQ6OnNldFNlYXJjaGluZ0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBib29sIGVu
YWJsZWQsIEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KQordm9pZCBJ
bnNwZWN0b3JET01BZ2VudDo6c2V0U2VhcmNoaW5nRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGJvb2wgZW5hYmxlZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRJbnNw
ZWN0b3JPYmplY3QpCiB7CiAgICAgaWYgKG1fc2VhcmNoaW5nRm9yTm9kZSA9PSBlbmFibGVkKQog
ICAgICAgICByZXR1cm47CkBAIC0xMDI3LDcgKzEwMjYsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpzZXRTZWFyY2hpbmdGb3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgYm9vbCBl
bmFibAogICAgIG1fb3ZlcmxheS0+ZGlkU2V0U2VhcmNoaW5nRm9yTm9kZShtX3NlYXJjaGluZ0Zv
ck5vZGUpOwogfQogCi1zdGQ6OnVuaXF1ZV9wdHI8SGlnaGxpZ2h0Q29uZmlnPiBJbnNwZWN0b3JE
T01BZ2VudDo6aGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIEluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KQor
c3RkOjp1bmlxdWVfcHRyPEhpZ2hsaWdodENvbmZpZz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hs
aWdodENvbmZpZ0Zyb21JbnNwZWN0b3JPYmplY3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBj
b25zdCBJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCkKIHsKICAgICBp
ZiAoIWhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCkgewogICAgICAgICBlcnJvclN0cmluZyA9IEFT
Q0lJTGl0ZXJhbCgiSW50ZXJuYWwgZXJyb3I6IGhpZ2hsaWdodCBjb25maWd1cmF0aW9uIHBhcmFt
ZXRlciBpcyBtaXNzaW5nIik7CkBAIC0xMDQ2LDM3ICsxMDQ1LDM3IEBAIHN0ZDo6dW5pcXVlX3B0
cjxIaWdobGlnaHRDb25maWc+IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRDb25maWdGcm9t
SW5zcGVjdG9yCiAgICAgcmV0dXJuIGhpZ2hsaWdodENvbmZpZzsKIH0KIAotdm9pZCBJbnNwZWN0
b3JET01BZ2VudDo6c2V0SW5zcGVjdE1vZGVFbmFibGVkKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgYm9vbCBlbmFibGVkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGhpZ2hsaWdo
dENvbmZpZykKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldEluc3BlY3RNb2RlRW5hYmxlZChF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGJvb2wgZW5hYmxlZCwgY29uc3QgSW5zcGVjdG9yT2Jq
ZWN0KiBoaWdobGlnaHRDb25maWcpCiB7Ci0gICAgc2V0U2VhcmNoaW5nRm9yTm9kZShlcnJvclN0
cmluZywgZW5hYmxlZCwgaGlnaGxpZ2h0Q29uZmlnID8gaGlnaGxpZ2h0Q29uZmlnLmdldCgpIDog
bnVsbHB0cik7CisgICAgc2V0U2VhcmNoaW5nRm9yTm9kZShlcnJvclN0cmluZywgZW5hYmxlZCwg
aGlnaGxpZ2h0Q29uZmlnID8gaGlnaGxpZ2h0Q29uZmlnIDogbnVsbHB0cik7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcmLCBpbnQgeCwgaW50
IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4m
JiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBvdXRsaW5lQ29sb3IsIGNv
bnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Omhp
Z2hsaWdodFJlY3QoRXJyb3JTdHJpbmcmLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhl
aWdodCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0KiBjb2xvciwgY29uc3QgSW5zcGVjdG9yT2JqZWN0
KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykKIHsKICAgICBh
dXRvIHF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oRmxvYXRSZWN0KHgsIHksIHdp
ZHRoLCBoZWlnaHQpKTsKLSAgICBpbm5lckhpZ2hsaWdodFF1YWQoV1RGOjptb3ZlKHF1YWQpLCBj
b2xvci5jb3B5UmVmKCksIG91dGxpbmVDb2xvci5jb3B5UmVmKCksIHVzZVBhZ2VDb29yZGluYXRl
cyk7CisgICAgaW5uZXJIaWdobGlnaHRRdWFkKFdURjo6bW92ZShxdWFkKSwgY29sb3IsIG91dGxp
bmVDb2xvciwgdXNlUGFnZUNvb3JkaW5hdGVzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6aGlnaGxpZ2h0UXVhZChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3JBcnJheT4mJiBxdWFkQXJyYXksIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiYgY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgb3V0bGluZUNvbG9yLCBj
b25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpCit2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpo
aWdobGlnaHRRdWFkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSW5zcGVjdG9yQXJy
YXkmIHF1YWRBcnJheSwgY29uc3QgSW5zcGVjdG9yT2JqZWN0KiBjb2xvciwgY29uc3QgSW5zcGVj
dG9yT2JqZWN0KiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykK
IHsKICAgICBhdXRvIHF1YWQgPSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oKTsKICAgICBp
ZiAoIXBhcnNlUXVhZChxdWFkQXJyYXksIHF1YWQuZ2V0KCkpKSB7CiAgICAgICAgIGVycm9yU3Ry
aW5nID0gQVNDSUlMaXRlcmFsKCJJbnZhbGlkIFF1YWQgZm9ybWF0Iik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9Ci0gICAgaW5uZXJIaWdobGlnaHRRdWFkKFdURjo6bW92ZShxdWFkKSwgY29sb3Iu
Y29weVJlZigpLCBvdXRsaW5lQ29sb3IuY29weVJlZigpLCB1c2VQYWdlQ29vcmRpbmF0ZXMpOwor
ICAgIGlubmVySGlnaGxpZ2h0UXVhZChXVEY6Om1vdmUocXVhZCksIGNvbG9yLCBvdXRsaW5lQ29s
b3IsIHVzZVBhZ2VDb29yZGluYXRlcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Omlu
bmVySGlnaGxpZ2h0UXVhZChzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRRdWFkPiBxdWFkLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYmIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKQordm9p
ZCBJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJIaWdobGlnaHRRdWFkKHN0ZDo6dW5pcXVlX3B0cjxG
bG9hdFF1YWQ+IHF1YWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCogY29sb3IsIGNvbnN0IEluc3Bl
Y3Rvck9iamVjdCogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMp
CiB7CiAgICAgYXV0byBoaWdobGlnaHRDb25maWcgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hsaWdo
dENvbmZpZz4oKTsKLSAgICBoaWdobGlnaHRDb25maWctPmNvbnRlbnQgPSBwYXJzZUNvbG9yKGNv
bG9yLmNvcHlSZWYoKSk7Ci0gICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50T3V0bGluZSA9IHBh
cnNlQ29sb3Iob3V0bGluZUNvbG9yLmNvcHlSZWYoKSk7CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5j
b250ZW50ID0gcGFyc2VDb2xvcihjb2xvcik7CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50
T3V0bGluZSA9IHBhcnNlQ29sb3Iob3V0bGluZUNvbG9yKTsKICAgICBoaWdobGlnaHRDb25maWct
PnVzZVBhZ2VDb29yZGluYXRlcyA9IHVzZVBhZ2VDb29yZGluYXRlcyA/ICp1c2VQYWdlQ29vcmRp
bmF0ZXMgOiBmYWxzZTsKICAgICBtX292ZXJsYXktPmhpZ2hsaWdodFF1YWQoV1RGOjptb3ZlKHF1
YWQpLCAqaGlnaGxpZ2h0Q29uZmlnKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGln
aGxpZ2h0Tm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3JPYmplY3Q+JiYgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0LCBjb25zdCBpbnQqIG5vZGVJZCwg
Y29uc3QgU3RyaW5nKiBvYmplY3RJZCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdo
dE5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIGhp
Z2hsaWdodEluc3BlY3Rvck9iamVjdCwgY29uc3QgaW50KiBub2RlSWQsIGNvbnN0IFN0cmluZyog
b2JqZWN0SWQpCiB7CiAgICAgTm9kZSogbm9kZSA9IDA7CiAgICAgaWYgKG5vZGVJZCkgewpAQCAt
MTA5MSwyMSArMTA5MCwyMSBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHROb2Rl
KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPElucwogICAgIGlmICghbm9k
ZSkKICAgICAgICAgcmV0dXJuOwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEhpZ2hsaWdodENvbmZp
Zz4gaGlnaGxpZ2h0Q29uZmlnID0gaGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChl
cnJvclN0cmluZywgaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0LmdldCgpKTsKKyAgICBzdGQ6OnVu
aXF1ZV9wdHI8SGlnaGxpZ2h0Q29uZmlnPiBoaWdobGlnaHRDb25maWcgPSBoaWdobGlnaHRDb25m
aWdGcm9tSW5zcGVjdG9yT2JqZWN0KGVycm9yU3RyaW5nLCAmaGlnaGxpZ2h0SW5zcGVjdG9yT2Jq
ZWN0KTsKICAgICBpZiAoIWhpZ2hsaWdodENvbmZpZykKICAgICAgICAgcmV0dXJuOwogCiAgICAg
bV9vdmVybGF5LT5oaWdobGlnaHROb2RlKG5vZGUsICpoaWdobGlnaHRDb25maWcpOwogfQogCi12
b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFtZShFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBjb2xvciwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBvdXRsaW5lQ29sb3IpCit2b2lkIEluc3Bl
Y3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFtZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
ZnJhbWVJZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0KiBjb2xvciwgY29uc3QgSW5zcGVjdG9yT2Jq
ZWN0KiBvdXRsaW5lQ29sb3IpCiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlQWdlbnQtPmZy
YW1lRm9ySWQoZnJhbWVJZCk7CiAgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5vd25lckVsZW1lbnQo
KSkgewogICAgICAgICBhdXRvIGhpZ2hsaWdodENvbmZpZyA9IHN0ZDo6bWFrZV91bmlxdWU8SGln
aGxpZ2h0Q29uZmlnPigpOwogICAgICAgICBoaWdobGlnaHRDb25maWctPnNob3dJbmZvID0gdHJ1
ZTsgLy8gQWx3YXlzIHNob3cgdG9vbHRpcHMgZm9yIGZyYW1lcy4KLSAgICAgICAgaGlnaGxpZ2h0
Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xvcihjb2xvci5jb3B5UmVmKCkpOwotICAgICAgICBo
aWdobGlnaHRDb25maWctPmNvbnRlbnRPdXRsaW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3Iu
Y29weVJlZigpKTsKKyAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xv
cihjb2xvcik7CisgICAgICAgIGhpZ2hsaWdodENvbmZpZy0+Y29udGVudE91dGxpbmUgPSBwYXJz
ZUNvbG9yKG91dGxpbmVDb2xvcik7CiAgICAgICAgIG1fb3ZlcmxheS0+aGlnaGxpZ2h0Tm9kZShm
cmFtZS0+b3duZXJFbGVtZW50KCksICpoaWdobGlnaHRDb25maWcpOwogICAgIH0KIH0KZGlmZiAt
LWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXggOWZjOTUyNWRi
N2NmYzQyNWZhZTlmMTM5YjlmZGU3YjE3OWFhNmZhYi4uZjRlMjk2MDAyMzZhOWNlMWQ3ZTExYTgz
MWM3MjliMTUyYzcyZjc5NyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
ckRPTUFnZW50LmgKQEAgLTEzMCwyMSArMTMwLDIxIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZv
aWQgc2V0Tm9kZVZhbHVlKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB2
YWx1ZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGdldEV2ZW50TGlzdGVuZXJzRm9yTm9k
ZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFdURjo6U3RyaW5nKiBvYmplY3RHcm91
cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRPTTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0ZW5lcnNBcnJheSkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIGdldEFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzRm9yTm9kZShFcnJvclN0cmluZyYs
IGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxp
dHlQcm9wZXJ0aWVzPiYgYXhQcm9wZXJ0aWVzKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQg
cGVyZm9ybVNlYXJjaChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1t
ZWRRdWVyeSwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgbm9kZUlk
cywgU3RyaW5nKiBzZWFyY2hJZCwgaW50KiByZXN1bHRDb3VudCkgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIHBlcmZvcm1TZWFyY2goRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHdoaXRl
c3BhY2VUcmltbWVkUXVlcnksIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqIG5vZGVJ
ZHMsIFN0cmluZyogc2VhcmNoSWQsIGludCogcmVzdWx0Q291bnQpIG92ZXJyaWRlOwogICAgIHZp
cnR1YWwgdm9pZCBnZXRTZWFyY2hSZXN1bHRzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBz
ZWFyY2hJZCwgaW50IGZyb21JbmRleCwgaW50IHRvSW5kZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxpbnQ+PiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJk
U2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc2VhcmNoSWQpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCByZXNvbHZlTm9kZShFcnJvclN0cmluZyYsIGludCBub2Rl
SWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3JvdXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwg
dm9pZCBnZXRBdHRyaWJ1dGVzKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+JiByZXN1bHQpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJs
ZWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBoaWdobGlnaHRD
b25maWcpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBzZXRJbnNwZWN0TW9kZUVuYWJsZWQo
RXJyb3JTdHJpbmcmLCBib29sIGVuYWJsZWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0KiBoaWdobGlnaHRDb25maWcpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0
Tm9kZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGludCogbm9kZUlkKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXRoLCBpbnQqIG5vZGVJZCkgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHB1c2hOb2RlQnlCYWNrZW5kSWRUb0Zyb250ZW5kKEVycm9yU3RyaW5nJiwg
QmFja2VuZE5vZGVJZCwgaW50KiBub2RlSWQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBy
ZWxlYXNlQmFja2VuZE5vZGVJZHMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG5vZGVHcm91
cCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGhpZGVIaWdobGlnaHQoRXJyb3JTdHJpbmcm
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0UmVjdChFcnJvclN0cmluZyYs
IGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBpbnQgaGVpZ2h0LCBjb25zdCBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdD4mJiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGlu
YXRlcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodFF1YWQoRXJyb3JTdHJp
bmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mJiBxdWFkLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgY29sb3IsIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wq
IHVzZVBhZ2VDb29yZGluYXRlcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdo
dE5vZGUoRXJyb3JTdHJpbmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+JiYgaGlnaGxpZ2h0Q29uZmlnLCBjb25zdCBpbnQqIG5vZGVJZCwgY29uc3QgU3RyaW5nKiBv
YmplY3RJZCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodEZyYW1lKEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmcmFtZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3Q+JiYgY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4mJiBvdXRsaW5lQ29sb3IpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBoaWdo
bGlnaHRSZWN0KEVycm9yU3RyaW5nJiwgaW50IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWln
aHQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBjb2xvciwgY29uc3QgSW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3QqIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNv
b3JkaW5hdGVzKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0UXVhZChFcnJv
clN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkmIHF1YWQsIGNvbnN0IElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBjb2xvciwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3QqIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0Tm9kZShFcnJvclN0cmluZyYsIGNv
bnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBoaWdobGlnaHRDb25maWcsIGNvbnN0IGlu
dCogbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9iamVjdElkKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFs
IHZvaWQgaGlnaGxpZ2h0RnJhbWUoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQs
IGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBjb2xvciwgY29uc3QgSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3QqIG91dGxpbmVDb2xvcikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFs
IHZvaWQgbW92ZVRvKEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgaW50IHRhcmdldE5vZGVJZCwg
Y29uc3QgaW50KiBhbmNob3JOb2RlSWQsIGludCogbmV3Tm9kZUlkKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgdW5kbyhFcnJvclN0cmluZyYpIG92ZXJyaWRlOwpAQCAtMjEyLDggKzIxMiw4
IEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3JQYWdlQWdlbnQqIHBhZ2VBZ2VudCgpIHsgcmV0dXJu
IG1fcGFnZUFnZW50OyB9CiAKIHByaXZhdGU6Ci0gICAgdm9pZCBzZXRTZWFyY2hpbmdGb3JOb2Rl
KEVycm9yU3RyaW5nJiwgYm9vbCBlbmFibGVkLCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCog
aGlnaGxpZ2h0Q29uZmlnKTsKLSAgICBzdGQ6OnVuaXF1ZV9wdHI8SGlnaGxpZ2h0Q29uZmlnPiBo
aWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0KEVycm9yU3RyaW5nJiwgSW5zcGVjdG9y
OjpJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CisgICAgdm9pZCBz
ZXRTZWFyY2hpbmdGb3JOb2RlKEVycm9yU3RyaW5nJiwgYm9vbCBlbmFibGVkLCBjb25zdCBJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0Q29uZmlnKTsKKyAgICBzdGQ6OnVuaXF1
ZV9wdHI8SGlnaGxpZ2h0Q29uZmlnPiBoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0
KEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdo
dEluc3BlY3Rvck9iamVjdCk7CiAKICAgICAvLyBOb2RlLXJlbGF0ZWQgbWV0aG9kcy4KICAgICB0
eXBlZGVmIEhhc2hNYXA8UmVmUHRyPE5vZGU+LCBpbnQ+IE5vZGVUb0lkTWFwOwpAQCAtMjQxLDcg
KzI0MSw3IEBAIHByaXZhdGU6CiAKICAgICB2b2lkIGRpc2NhcmRCaW5kaW5ncygpOwogCi0gICAg
dm9pZCBpbm5lckhpZ2hsaWdodFF1YWQoc3RkOjp1bmlxdWVfcHRyPEZsb2F0UXVhZD4sIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBjb2xvciwgY29uc3QgUmVmUHRy
PEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCog
dXNlUGFnZUNvb3JkaW5hdGVzKTsKKyAgICB2b2lkIGlubmVySGlnaGxpZ2h0UXVhZChzdGQ6OnVu
aXF1ZV9wdHI8RmxvYXRRdWFkPiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGNv
bG9yLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogb3V0bGluZUNvbG9yLCBjb25z
dCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpOwogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBt
X3BhZ2VBZ2VudDsKICAgICBJbnNwZWN0b3I6OkluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmpl
Y3RlZFNjcmlwdE1hbmFnZXI7CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3BwCmluZGV4IDQ4ZGQzZDU1M2JlMGJiZTU1NTRiOWQ3
YjkyZDlmYzU3MjE3MjcwYzAuLmIxNjg3Y2Y1NDg1M2Y2MjJmNTJhNjc2OGM5MmNjZjQyNThlN2E1
ZjEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQuY3BwCkBAIC05MiwxMCArOTIsMTAgQEAgdm9pZCBJbnNwZWN0b3JET01TdG9y
YWdlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmKQogICAgIG1fZW5hYmxlZCA9IGZhbHNlOwog
fQogCi12b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6Z2V0RE9NU3RvcmFnZUl0ZW1zKEVy
cm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBz
dG9yYWdlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxTdHJpbmc+Pj4mIGl0ZW1zKQordm9pZCBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQ6OmdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IEluc3BlY3Rvck9iamVjdCYgc3RvcmFnZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4+JiBpdGVtcykKIHsKICAg
ICBGcmFtZSogZnJhbWU7Ci0gICAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYSA9IGZp
bmRTdG9yYWdlQXJlYShlcnJvclN0cmluZywgc3RvcmFnZUlkLmNvcHlSZWYoKSwgZnJhbWUpOwor
ICAgIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoZXJy
b3JTdHJpbmcsIHN0b3JhZ2VJZCwgZnJhbWUpOwogICAgIGlmICghc3RvcmFnZUFyZWEpIHsKICAg
ICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIk5vIFN0b3JhZ2VBcmVhIGZvciBnaXZl
biBzdG9yYWdlSWQiKTsKICAgICAgICAgcmV0dXJuOwpAQCAtMTE2LDEwICsxMTYsMTAgQEAgdm9p
ZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnMKICAgICBpdGVtcyA9IFdURjo6bW92ZShzdG9yYWdlSXRlbXMp
OwogfQogCi12b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c2V0RE9NU3RvcmFnZUl0ZW0o
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYm
IHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCit2b2lk
IEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c2V0RE9NU3RvcmFnZUl0ZW0oRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIHN0b3JhZ2VJZCwgY29uc3QgU3Ry
aW5nJiBrZXksIGNvbnN0IFN0cmluZyYgdmFsdWUpCiB7CiAgICAgRnJhbWUqIGZyYW1lOwotICAg
IFJlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoZXJyb3JT
dHJpbmcsIHN0b3JhZ2VJZC5jb3B5UmVmKCksIGZyYW1lKTsKKyAgICBSZWZQdHI8U3RvcmFnZUFy
ZWE+IHN0b3JhZ2VBcmVhID0gZmluZFN0b3JhZ2VBcmVhKGVycm9yU3RyaW5nLCBzdG9yYWdlSWQs
IGZyYW1lKTsKICAgICBpZiAoIXN0b3JhZ2VBcmVhKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0g
QVNDSUlMaXRlcmFsKCJTdG9yYWdlIG5vdCBmb3VuZCIpOwogICAgICAgICByZXR1cm47CkBAIC0x
MzEsMTAgKzEzMSwxMCBAQCB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6c2V0RE9NU3Rv
cmFnZUl0ZW0oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdAogICAgICAgICBlcnJvclN0
cmluZyA9IEV4Y2VwdGlvbkNvZGVEZXNjcmlwdGlvbihRVU9UQV9FWENFRURFRF9FUlIpLm5hbWU7
CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpyZW1vdmVET01TdG9yYWdlSXRl
bShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+
JiYgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSkKK3ZvaWQgSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50OjpyZW1vdmVET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNv
bnN0IEluc3BlY3Rvck9iamVjdCYgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSkKIHsKICAg
ICBGcmFtZSogZnJhbWU7Ci0gICAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYSA9IGZp
bmRTdG9yYWdlQXJlYShlcnJvclN0cmluZywgc3RvcmFnZUlkLmNvcHlSZWYoKSwgZnJhbWUpOwor
ICAgIFJlZlB0cjxTdG9yYWdlQXJlYT4gc3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoZXJy
b3JTdHJpbmcsIHN0b3JhZ2VJZCwgZnJhbWUpOwogICAgIGlmICghc3RvcmFnZUFyZWEpIHsKICAg
ICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIlN0b3JhZ2Ugbm90IGZvdW5kIik7CiAg
ICAgICAgIHJldHVybjsKQEAgLTE4MCwxMyArMTgwLDEzIEBAIHZvaWQgSW5zcGVjdG9yRE9NU3Rv
cmFnZUFnZW50OjpkaWREaXNwYXRjaERPTVN0b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwg
Y29uCiAgICAgICAgIG1fZnJvbnRlbmREaXNwYXRjaGVyLT5kb21TdG9yYWdlSXRlbVVwZGF0ZWQo
aWQsIGtleSwgb2xkVmFsdWUsIG5ld1ZhbHVlKTsKIH0KIAotUmVmUHRyPFN0b3JhZ2VBcmVhPiBJ
bnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OmZpbmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyYgZXJy
b3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgc3RvcmFnZUlkLCBGcmFt
ZSomIHRhcmdldEZyYW1lKQorUmVmUHRyPFN0b3JhZ2VBcmVhPiBJbnNwZWN0b3JET01TdG9yYWdl
QWdlbnQ6OmZpbmRTdG9yYWdlQXJlYShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IElu
c3BlY3Rvck9iamVjdCYgc3RvcmFnZUlkLCBGcmFtZSomIHRhcmdldEZyYW1lKQogewogICAgIFN0
cmluZyBzZWN1cml0eU9yaWdpbjsKICAgICBib29sIGlzTG9jYWxTdG9yYWdlID0gZmFsc2U7Ci0g
ICAgYm9vbCBzdWNjZXNzID0gc3RvcmFnZUlkLT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzZWN1
cml0eU9yaWdpbiIpLCBzZWN1cml0eU9yaWdpbik7CisgICAgYm9vbCBzdWNjZXNzID0gc3RvcmFn
ZUlkLmdldFN0cmluZyhBU0NJSUxpdGVyYWwoInNlY3VyaXR5T3JpZ2luIiksIHNlY3VyaXR5T3Jp
Z2luKTsKICAgICBpZiAoc3VjY2VzcykKLSAgICAgICAgc3VjY2VzcyA9IHN0b3JhZ2VJZC0+Z2V0
Qm9vbGVhbihBU0NJSUxpdGVyYWwoImlzTG9jYWxTdG9yYWdlIiksIGlzTG9jYWxTdG9yYWdlKTsK
KyAgICAgICAgc3VjY2VzcyA9IHN0b3JhZ2VJZC5nZXRCb29sZWFuKEFTQ0lJTGl0ZXJhbCgiaXNM
b2NhbFN0b3JhZ2UiKSwgaXNMb2NhbFN0b3JhZ2UpOwogICAgIGlmICghc3VjY2VzcykgewogICAg
ICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiSW52YWxpZCBzdG9yYWdlSWQgZm9ybWF0
Iik7CiAgICAgICAgIHRhcmdldEZyYW1lID0gbnVsbHB0cjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaAppbmRleCBiZWJkMWVmNDEy
ZjJkYmZiNjEzYTcxM2FiZDQ4YTcyNDQyZDM2YjI2Li41MGExZGQyMWM1NzFiMmMzMzg3MTE0MTlh
OGY0ZjEwZWE3OWM5MGRkIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yRE9NU3RvcmFnZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCkBAIC02Myw5ICs2Myw5IEBAIHB1YmxpYzoKICAgICAv
LyBDYWxsZWQgZnJvbSB0aGUgZnJvbnQtZW5kLgogICAgIHZpcnR1YWwgdm9pZCBlbmFibGUoRXJy
b3JTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmlu
ZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBnZXRET01TdG9yYWdlSXRlbXMoRXJyb3JT
dHJpbmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgc3RvcmFn
ZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8U3RyaW5nPj4+JiBpdGVtcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNl
dERPTVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiYmIHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmlu
ZyYgdmFsdWUpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCByZW1vdmVET01TdG9yYWdlSXRl
bShFcnJvclN0cmluZyYsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4m
JiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgZ2V0RE9NU3RvcmFnZUl0ZW1zKEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3QmIHN0b3JhZ2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+PiYgaXRlbXMpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyYsIGNvbnN0IElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5LCBj
b25zdCBTdHJpbmcmIHZhbHVlKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgcmVtb3ZlRE9N
U3RvcmFnZUl0ZW0oRXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dCYgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7CiAKICAgICAvLyBDYWxs
ZWQgZnJvbSB0aGUgaW5qZWN0ZWQgc2NyaXB0LgogICAgIFN0cmluZyBzdG9yYWdlSWQoU3RvcmFn
ZSopOwpAQCAtNzUsNyArNzUsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBkaWREaXNwYXRjaERPTVN0
b3JhZ2VFdmVudChjb25zdCBTdHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiBvbGRWYWx1ZSwgY29u
c3QgU3RyaW5nJiBuZXdWYWx1ZSwgU3RvcmFnZVR5cGUsIFNlY3VyaXR5T3JpZ2luKiwgUGFnZSop
OwogCiBwcml2YXRlOgotICAgIFJlZlB0cjxTdG9yYWdlQXJlYT4gZmluZFN0b3JhZ2VBcmVhKEVy
cm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmLCBG
cmFtZSomKTsKKyAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IGZpbmRTdG9yYWdlQXJlYShFcnJvclN0
cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiwgRnJhbWUqJik7CiAKICAg
ICBJbnNwZWN0b3JQYWdlQWdlbnQqIG1fcGFnZUFnZW50OwogICAgIHN0ZDo6dW5pcXVlX3B0cjxJ
bnNwZWN0b3I6OkRPTVN0b3JhZ2VGcm9udGVuZERpc3BhdGNoZXI+IG1fZnJvbnRlbmREaXNwYXRj
aGVyOwpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4
ZWREQkFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVk
REJBZ2VudC5jcHAKaW5kZXggODMxZjNiMjAyYjlhMWYwMzcyMjRkZmVlZTYzN2MyZDJiYjhlZTUy
OC4uOWJmMTI5MTE2YzRkYzgwYTA4NjMxYzA0ZDcwN2IxODNhYjhiY2FjZiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNwcAorKysg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCkBA
IC0zNzgsNyArMzc4LDcgQEAgc3RhdGljIFJlZlB0cjxJREJLZXk+IGlkYktleUZyb21JbnNwZWN0
b3JPYmplY3QoSW5zcGVjdG9yT2JqZWN0KiBrZXkpCiAgICAgcmV0dXJuIGlkYktleS5yZWxlYXNl
KCk7CiB9CiAKLXN0YXRpYyBSZWZQdHI8SURCS2V5UmFuZ2U+IGlkYktleVJhbmdlRnJvbUtleVJh
bmdlKEluc3BlY3Rvck9iamVjdCoga2V5UmFuZ2UpCitzdGF0aWMgUmVmUHRyPElEQktleVJhbmdl
PiBpZGJLZXlSYW5nZUZyb21LZXlSYW5nZShjb25zdCBJbnNwZWN0b3JPYmplY3QqIGtleVJhbmdl
KQogewogICAgIFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+IGxvd2VyOwogICAgIGlmICgha2V5UmFu
Z2UtPmdldE9iamVjdCgibG93ZXIiLCBsb3dlcikpCkBAIC02NTUsNyArNjU1LDcgQEAgdm9pZCBJ
bnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGFiYXNlKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3QKICAgICBkYXRhYmFzZUxvYWRlci0+c3RhcnQoaWRiRmFjdG9yeSwg
ZG9jdW1lbnQtPnNlY3VyaXR5T3JpZ2luKCksIGRhdGFiYXNlTmFtZSk7CiB9CiAKLXZvaWQgSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhKEVycm9yU3RyaW5nJiBlcnJvclN0cmlu
ZywgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5h
bWUsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGluZGV4TmFt
ZSwgaW50IHNraXBDb3VudCwgaW50IHBhZ2VTaXplLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYmIGtleVJhbmdlLCBSZWY8UmVxdWVzdERhdGFDYWxsYmFjaz4mJiByZXF1ZXN0Q2FsbGJh
Y2spCit2b2lkIEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YShFcnJvclN0cmlu
ZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgY29uc3QgU3Ry
aW5nJiBpbmRleE5hbWUsIGludCBza2lwQ291bnQsIGludCBwYWdlU2l6ZSwgY29uc3QgSW5zcGVj
dG9yT2JqZWN0KiBrZXlSYW5nZSwgUmVmPFJlcXVlc3REYXRhQ2FsbGJhY2s+JiYgcmVxdWVzdENh
bGxiYWNrKQogewogICAgIEZyYW1lKiBmcmFtZSA9IG1fcGFnZUFnZW50LT5maW5kRnJhbWVXaXRo
U2VjdXJpdHlPcmlnaW4oc2VjdXJpdHlPcmlnaW4pOwogICAgIERvY3VtZW50KiBkb2N1bWVudCA9
IGFzc2VydERvY3VtZW50KGVycm9yU3RyaW5nLCBmcmFtZSk7CkBAIC02NjgsNyArNjY4LDcgQEAg
dm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGEoRXJyb3JTdHJpbmcmIGVy
cm9yU3RyaW5nLCBjb25zdCBTdHJpbmcKIAogICAgIEluamVjdGVkU2NyaXB0IGluamVjdGVkU2Ny
aXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXItPmluamVjdGVkU2NyaXB0Rm9yKG1haW5Xb3Js
ZEV4ZWNTdGF0ZShmcmFtZSkpOwogCi0gICAgUmVmUHRyPElEQktleVJhbmdlPiBpZGJLZXlSYW5n
ZSA9IGtleVJhbmdlID8gaWRiS2V5UmFuZ2VGcm9tS2V5UmFuZ2Uoa2V5UmFuZ2UuZ2V0KCkpIDog
bnVsbHB0cjsKKyAgICBSZWZQdHI8SURCS2V5UmFuZ2U+IGlkYktleVJhbmdlID0ga2V5UmFuZ2Ug
PyBpZGJLZXlSYW5nZUZyb21LZXlSYW5nZShrZXlSYW5nZSkgOiBudWxscHRyOwogICAgIGlmIChr
ZXlSYW5nZSAmJiAhaWRiS2V5UmFuZ2UpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxp
dGVyYWwoIkNhbiBub3QgcGFyc2Uga2V5IHJhbmdlLiIpOwogICAgICAgICByZXR1cm47CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCmlu
ZGV4IDU5MjEyNTI4M2VlNTJjOTRhMjYzY2ZhZGRlYjExNzIwOTJiOTAxYzEuLjExMDcyOGEyNmY1
MDRlNWM4NmI2ZWJjYjFjZDE3YTRhMTE2MjA5YjAgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5oCkBAIC02MSw3ICs2MSw3IEBAIHB1
YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZShFcnJvclN0cmluZyYpIG92ZXJyaWRlOwog
ICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0RGF0YWJhc2VOYW1lcyhFcnJvclN0cmluZyYsIGNvbnN0
IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIFJlZjxSZXF1ZXN0RGF0YWJhc2VOYW1lc0NhbGxiYWNr
PiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGFiYXNlKEVycm9yU3Ry
aW5nJiwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFz
ZU5hbWUsIFJlZjxSZXF1ZXN0RGF0YWJhc2VDYWxsYmFjaz4mJikgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIHJlcXVlc3REYXRhKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzZWN1cml0
eU9yaWdpbiwgY29uc3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgb2JqZWN0
U3RvcmVOYW1lLCBjb25zdCBTdHJpbmcmIGluZGV4TmFtZSwgaW50IHNraXBDb3VudCwgaW50IHBh
Z2VTaXplLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYga2V5UmFu
Z2UsIFJlZjxSZXF1ZXN0RGF0YUNhbGxiYWNrPiYmKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgcmVxdWVzdERhdGEoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2lu
LCBjb25zdCBTdHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5h
bWUsIGNvbnN0IFN0cmluZyYgaW5kZXhOYW1lLCBpbnQgc2tpcENvdW50LCBpbnQgcGFnZVNpemUs
IGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBrZXlSYW5nZSwgUmVmPFJlcXVlc3RE
YXRhQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjbGVhck9iamVjdFN0
b3JlKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBpbl9zZWN1cml0eU9yaWdpbiwgY29uc3Qg
U3RyaW5nJiBpbl9kYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgaW5fb2JqZWN0U3RvcmVOYW1l
LCBSZWY8Q2xlYXJPYmplY3RTdG9yZUNhbGxiYWNrPiYmKSBvdmVycmlkZTsKIAogcHJpdmF0ZToK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2Vu
dC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3Bw
CmluZGV4IDVjYWU2MDE1N2M3ODA4ODk0Y2FmOWI2Mjg5M2ZiZTBmYWU2NDBhMzQuLjY0Y2I4MTE3
Yzc5ODFkYWM0MzRmNDNjYmYzYmZkOWUzMzEyODQ3YTEgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKKysrIGIvU291cmNlL1dlYkNv
cmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcApAQCAtMzI5LDE1ICszMjksMTUg
QEAgdm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6c3RvcENhcHR1cmluZyhFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcpCiAgICAgbV9wYWdlLnJlcGxheUNvbnRyb2xsZXIoKS5zdG9wQ2FwdHVyaW5n
KCk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yUmVwbGF5QWdlbnQ6OnJlcGxheVRvUG9zaXRpb24oRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIHBv
c2l0aW9uT2JqZWN0LCBib29sIGZhc3RSZXBsYXkpCit2b2lkIEluc3BlY3RvclJlcGxheUFnZW50
OjpyZXBsYXlUb1Bvc2l0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSW5zcGVj
dG9yT2JqZWN0JiBwb3NpdGlvbk9iamVjdCwgYm9vbCBmYXN0UmVwbGF5KQogewogICAgIFJlcGxh
eVBvc2l0aW9uIHBvc2l0aW9uOwotICAgIGlmICghcG9zaXRpb25PYmplY3QtPmdldEludGVnZXIo
QVNDSUlMaXRlcmFsKCJzZWdtZW50T2Zmc2V0IiksIHBvc2l0aW9uLnNlZ21lbnRPZmZzZXQpKSB7
CisgICAgaWYgKCFwb3NpdGlvbk9iamVjdC5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgic2VnbWVu
dE9mZnNldCIpLCBwb3NpdGlvbi5zZWdtZW50T2Zmc2V0KSkgewogICAgICAgICBlcnJvclN0cmlu
ZyA9IEFTQ0lJTGl0ZXJhbCgiQ291bGRuJ3QgZGVjb2RlIFJlcGxheVBvc2l0aW9uIHNlZ21lbnQg
b2Zmc2V0IHByb3ZpZGVkIHRvIFJlcGxheUFnZW50LnJlcGxheVRvUG9zaXRpb24uIik7CiAgICAg
ICAgIHJldHVybjsKICAgICB9CiAKLSAgICBpZiAoIXBvc2l0aW9uT2JqZWN0LT5nZXRJbnRlZ2Vy
KEFTQ0lJTGl0ZXJhbCgiaW5wdXRPZmZzZXQiKSwgcG9zaXRpb24uaW5wdXRPZmZzZXQpKSB7Cisg
ICAgaWYgKCFwb3NpdGlvbk9iamVjdC5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgiaW5wdXRPZmZz
ZXQiKSwgcG9zaXRpb24uaW5wdXRPZmZzZXQpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gQVND
SUlMaXRlcmFsKCJDb3VsZG4ndCBkZWNvZGUgUmVwbGF5UG9zaXRpb24gaW5wdXQgb2Zmc2V0IHBy
b3ZpZGVkIHRvIFJlcGxheUFnZW50LnJlcGxheVRvUG9zaXRpb24uIik7CiAgICAgICAgIHJldHVy
bjsKICAgICB9CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
UmVwbGF5QWdlbnQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlB
Z2VudC5oCmluZGV4IDBiOTRlMTA1NmI0M2JlY2ZiMDQ5YWExNDZjZWMzNGE2YTE3NjE1ZTEuLjNj
MmJjN2NmZmExYjIzZjRjMzljNzM5MzdkN2Y4N2VlNTgyMDY0YWEgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oCisrKyBiL1NvdXJjZS9X
ZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlBZ2VudC5oCkBAIC05Niw3ICs5Niw3IEBA
IHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc3RhcnRDYXB0dXJpbmcoRXJyb3JTdHJpbmcmKSBv
dmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc3RvcENhcHR1cmluZyhFcnJvclN0cmluZyYpIG92
ZXJyaWRlOwogCi0gICAgdmlydHVhbCB2b2lkIHJlcGxheVRvUG9zaXRpb24oRXJyb3JTdHJpbmcm
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYsIGJvb2wgc2hvdWxk
RmFzdEZvcndhcmQpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCByZXBsYXlUb1Bvc2l0aW9u
KEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIHBvc2l0aW9u
LCBib29sIHNob3VsZEZhc3RGb3J3YXJkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgcmVw
bGF5VG9Db21wbGV0aW9uKEVycm9yU3RyaW5nJiwgYm9vbCBzaG91bGRGYXN0Rm9yd2FyZCkgb3Zl
cnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHBhdXNlUGxheWJhY2soRXJyb3JTdHJpbmcmKSBvdmVy
cmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2FuY2VsUGxheWJhY2soRXJyb3JTdHJpbmcmKSBvdmVy
cmlkZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNv
dXJjZUFnZW50LmNwcCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJj
ZUFnZW50LmNwcAppbmRleCAyNmFjMjliYWIyYzJhYzM3YzI3YTZkM2ZjOWViMDU2NTgzMTljMjkz
Li4yZmI5NGYzMzUyMjQ1ZjYxMDExNzg0ZTJmNmQ2M2JiODIxMDA0ZWZlIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKKysrIGIv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuY3BwCkBAIC0y
OTksMTUgKzI5OSw5IEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6d2lsbFNlbmRSZXF1
ZXN0KHVuc2lnbmVkIGxvbmcgaWRlbnRpZmllciwgRG9jdW1lbnRMCiAKICAgICBtX3Jlc291cmNl
c0RhdGEtPnNldFJlc291cmNlVHlwZShyZXF1ZXN0SWQsIHR5cGUpOwogCi0gICAgaWYgKG1fZXh0
cmFSZXF1ZXN0SGVhZGVycykgewotICAgICAgICBJbnNwZWN0b3JPYmplY3Q6OmNvbnN0X2l0ZXJh
dG9yIGVuZCA9IG1fZXh0cmFSZXF1ZXN0SGVhZGVycy0+ZW5kKCk7Ci0gICAgICAgIGZvciAoSW5z
cGVjdG9yT2JqZWN0Ojpjb25zdF9pdGVyYXRvciBpdCA9IG1fZXh0cmFSZXF1ZXN0SGVhZGVycy0+
YmVnaW4oKTsgaXQgIT0gZW5kOyArK2l0KSB7Ci0gICAgICAgICAgICBTdHJpbmcgdmFsdWU7Ci0g
ICAgICAgICAgICBpZiAoaXQtPnZhbHVlLT5hc1N0cmluZyh2YWx1ZSkpCi0gICAgICAgICAgICAg
ICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoaXQtPmtleSwgdmFsdWUpOwotICAgICAgICB9
Ci0gICAgfQotCisgICAgZm9yIChhdXRvJiBlbnRyeSA6IG1fZXh0cmFSZXF1ZXN0SGVhZGVycykK
KyAgICAgICAgcmVxdWVzdC5zZXRIVFRQSGVhZGVyRmllbGQoZW50cnkua2V5LCBlbnRyeS52YWx1
ZSk7CisgICAgCiAgICAgcmVxdWVzdC5zZXRSZXBvcnRMb2FkVGltaW5nKHRydWUpOwogICAgIHJl
cXVlc3Quc2V0UmVwb3J0UmF3SGVhZGVycyh0cnVlKTsKIApAQCAtNjI0LDkgKzYxOCwxMyBAQCB2
b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmRpc2FibGUoRXJyb3JTdHJpbmcmKQogICAgIG1f
ZXh0cmFSZXF1ZXN0SGVhZGVycy5jbGVhcigpOwogfQogCi12b2lkIEluc3BlY3RvclJlc291cmNl
QWdlbnQ6OnNldEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JTdHJpbmcmLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yT2JqZWN0PiYmIGhlYWRlcnMpCit2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OnNl
dEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIGhl
YWRlcnMpCiB7Ci0gICAgbV9leHRyYVJlcXVlc3RIZWFkZXJzID0gaGVhZGVycy5jb3B5UmVmKCk7
CisgICAgZm9yIChhdXRvJiBlbnRyeSA6IGhlYWRlcnMpIHsKKyAgICAgICAgU3RyaW5nIHN0cmlu
Z1ZhbHVlOworICAgICAgICBpZiAoZW50cnkudmFsdWUtPmFzU3RyaW5nKHN0cmluZ1ZhbHVlKSkK
KyAgICAgICAgICAgIG1fZXh0cmFSZXF1ZXN0SGVhZGVycy5zZXQoZW50cnkua2V5LCBzdHJpbmdW
YWx1ZSk7CisgICAgfQogfQogCiB2b2lkIEluc3BlY3RvclJlc291cmNlQWdlbnQ6OmdldFJlc3Bv
bnNlQm9keShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgcmVxdWVzdElk
LCBTdHJpbmcqIGNvbnRlbnQsIGJvb2wqIGJhc2U2NEVuY29kZWQpCmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5oIGIvU291cmNlL1dl
YkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaAppbmRleCA2YWNkZTJiN2Ez
YWRlNmQ4NWRiNTQwM2UxNDdkZWZhMDZjYWFiZmJkLi5lMjU1MzFjOTZiYWFjZTcwNmQ2N2RkZmYw
NTFjNjQwMzgwYjcwODg3IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVzb3VyY2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JSZXNvdXJjZUFnZW50LmgKQEAgLTExNyw3ICsxMTcsNyBAQCBwdWJsaWM6CiAgICAgLy8g
Q2FsbGVkIGZyb20gZnJvbnRlbmQuCiAgICAgdmlydHVhbCB2b2lkIGVuYWJsZShFcnJvclN0cmlu
ZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3Zl
cnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JTdHJpbmcm
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYpIG92ZXJyaWRlOwor
ICAgIHZpcnR1YWwgdm9pZCBzZXRFeHRyYUhUVFBIZWFkZXJzKEVycm9yU3RyaW5nJiwgY29uc3Qg
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIGhlYWRlcnMpIG92ZXJyaWRlOwogICAgIHZpcnR1
YWwgdm9pZCBnZXRSZXNwb25zZUJvZHkoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHJlcXVl
c3RJZCwgU3RyaW5nKiBjb250ZW50LCBib29sKiBiYXNlNjRFbmNvZGVkKSBvdmVycmlkZTsKICAg
ICB2aXJ0dWFsIHZvaWQgY2FuQ2xlYXJCcm93c2VyQ2FjaGUoRXJyb3JTdHJpbmcmLCBib29sKikg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGNsZWFyQnJvd3NlckNhY2hlKEVycm9yU3RyaW5n
Jikgb3ZlcnJpZGU7CkBAIC0xMzksNyArMTM5LDcgQEAgcHJpdmF0ZToKICAgICBib29sIG1fZW5h
YmxlZDsKICAgICBib29sIG1fY2FjaGVEaXNhYmxlZDsKICAgICBib29sIG1fbG9hZGluZ1hIUlN5
bmNocm9ub3VzbHk7Ci0gICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBtX2V4
dHJhUmVxdWVzdEhlYWRlcnM7CisgICAgSGFzaE1hcDxTdHJpbmcsIFN0cmluZz4gbV9leHRyYVJl
cXVlc3RIZWFkZXJzOwogCiAgICAgSGFzaFNldDx1bnNpZ25lZCBsb25nPiBtX2hpZGRlblJlcXVl
c3RJZGVudGlmaWVyczsKIApkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclN0eWxlU2hlZXQuaCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JT
dHlsZVNoZWV0LmgKaW5kZXggZTc3NjE3ZGYwZGZjNGRkNTcwYzUyNGQxMWI2NGY5YmZjOWYyMzdk
Zi4uOWU3YWIzMjc4ODdkM2NiYzFiYTYxZjQwOTI1MzlhNTYxZDJkYmEwNiAxMDA2NDQKLS0tIGEv
U291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaAorKysgYi9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCkBAIC01NiwxMiArNTYs
MTIgQEAgY2xhc3MgSW5zcGVjdG9yQ1NTSWQgewogcHVibGljOgogICAgIEluc3BlY3RvckNTU0lk
KCkgeyB9CiAKLSAgICBleHBsaWNpdCBJbnNwZWN0b3JDU1NJZChjb25zdCBSZWZQdHI8SW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgdmFsdWUpCisgICAgZXhwbGljaXQgSW5zcGVjdG9yQ1NT
SWQoY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIHZhbHVlKQogICAgIHsKLSAgICAg
ICAgaWYgKCF2YWx1ZS0+Z2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgic3R5bGVTaGVldElkIiksIG1f
c3R5bGVTaGVldElkKSkKKyAgICAgICAgaWYgKCF2YWx1ZS5nZXRTdHJpbmcoQVNDSUlMaXRlcmFs
KCJzdHlsZVNoZWV0SWQiKSwgbV9zdHlsZVNoZWV0SWQpKQogICAgICAgICAgICAgcmV0dXJuOwog
Ci0gICAgICAgIGlmICghdmFsdWUtPmdldEludGVnZXIoQVNDSUlMaXRlcmFsKCJvcmRpbmFsIiks
IG1fb3JkaW5hbCkpCisgICAgICAgIGlmICghdmFsdWUuZ2V0SW50ZWdlcihBU0NJSUxpdGVyYWwo
Im9yZGluYWwiKSwgbV9vcmRpbmFsKSkKICAgICAgICAgICAgIG1fc3R5bGVTaGVldElkID0gU3Ry
aW5nKCk7CiAgICAgfQogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yV29ya2VyQWdlbnQuY3BwIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
cldvcmtlckFnZW50LmNwcAppbmRleCBkODRiYjA1OWJmZGJjMDUzMjIzN2E0NGMyNjQ4YWE4YWI1
Mzk0ZTMxLi5kZWJjNjk4Nzk1ZDk4YzQyYjhlYjE4YzEwZmRhMmEyNWY4NWYyZTliIDEwMDY0NAot
LS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuY3BwCisr
KyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKQEAg
LTE3MSwxMSArMTcxLDExIEBAIHZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6OmRpc2Nvbm5lY3RG
cm9tV29ya2VyKEVycm9yU3RyaW5nJiBlcnJvciwgaW50IHdvcmtlcklkCiAgICAgICAgIGVycm9y
ID0gQVNDSUlMaXRlcmFsKCJXb3JrZXIgaXMgZ29uZSIpOwogfQogCi12b2lkIEluc3BlY3Rvcldv
cmtlckFnZW50OjpzZW5kTWVzc2FnZVRvV29ya2VyKEVycm9yU3RyaW5nJiBlcnJvciwgaW50IHdv
cmtlcklkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpCit2b2lkIElu
c3BlY3RvcldvcmtlckFnZW50OjpzZW5kTWVzc2FnZVRvV29ya2VyKEVycm9yU3RyaW5nJiBlcnJv
ciwgaW50IHdvcmtlcklkLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIG1lc3NhZ2UpCiB7CiAgICAg
V29ya2VyRnJvbnRlbmRDaGFubmVsKiBjaGFubmVsID0gbV9pZFRvQ2hhbm5lbC5nZXQod29ya2Vy
SWQpOwogICAgIGlmIChjaGFubmVsKQotICAgICAgICBjaGFubmVsLT5wcm94eSgpLT5zZW5kTWVz
c2FnZVRvSW5zcGVjdG9yKG1lc3NhZ2UtPnRvSlNPTlN0cmluZygpKTsKKyAgICAgICAgY2hhbm5l
bC0+cHJveHkoKS0+c2VuZE1lc3NhZ2VUb0luc3BlY3RvcihtZXNzYWdlLnRvSlNPTlN0cmluZygp
KTsKICAgICBlbHNlCiAgICAgICAgIGVycm9yID0gQVNDSUlMaXRlcmFsKCJXb3JrZXIgaXMgZ29u
ZSIpOwogfQpkaWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rvcldv
cmtlckFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdl
bnQuaAppbmRleCA0ZTczY2ZiOTE3MGYyMzQwYmIwNDg5YzZkOTFhZjNjOWYzOThhNTkyLi4yM2Y2
ZTVjOWIxMDY4NzE3ODdjMWY2MjU0YzBlODIwODE5MGM5YWFjIDEwMDY0NAotLS0gYS9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaAorKysgYi9Tb3VyY2UvV2Vi
Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQuaApAQCAtNjgsNyArNjgsNyBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGNhbkluc3BlY3RXb3JrZXJzKEVycm9yU3RyaW5nJiwg
Ym9vbCopIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBjb25uZWN0VG9Xb3JrZXIoRXJyb3JT
dHJpbmcmLCBpbnQgd29ya2VySWQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjb25u
ZWN0RnJvbVdvcmtlcihFcnJvclN0cmluZyYsIGludCB3b3JrZXJJZCkgb3ZlcnJpZGU7Ci0gICAg
dmlydHVhbCB2b2lkIHNlbmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JTdHJpbmcmLCBpbnQgd29ya2Vy
SWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBtZXNzYWdlKSBv
dmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2VuZE1lc3NhZ2VUb1dvcmtlcihFcnJvclN0cmlu
ZyYsIGludCB3b3JrZXJJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIG1lc3Nh
Z2UpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZXRBdXRvY29ubmVjdFRvV29ya2VycyhF
cnJvclN0cmluZyYsIGJvb2wgdmFsdWUpIG92ZXJyaWRlOwogCiBwcml2YXRlOgo=
</data>
<flag name="review"
          id="280165"
          type_id="1"
          status="+"
          setter="joepeck"
    />
          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255130</attachid>
            <date>2015-06-18 14:01:23 -0700</date>
            <delta_ts>2015-06-18 14:17:40 -0700</delta_ts>
            <desc>[PATCH] ObjC Diff</desc>
            <filename>diff-1.patch</filename>
            <type>text/plain</type>
            <size>5931</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2Rl
Z2VuL2dlbmVyYXRlX29iamNfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVf
b2JqY19iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKaW5kZXggNWIzNTc5MC4u
MjdiZGQ0YSAxMDA3NTUKLS0tIGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3Jp
cHRzL2NvZGVnZW4vZ2VuZXJhdGVfb2JqY19iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRp
b24ucHkKKysrIGIvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVn
ZW4vZ2VuZXJhdGVfb2JqY19iYWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKQEAg
LTE1OCw4ICsxNTgsMTAgQEAgY2xhc3MgT2JqQ0NvbmZpZ3VyYXRpb25JbXBsZW1lbnRhdGlvbkdl
bmVyYXRvcihHZW5lcmF0b3IpOgogICAgICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgRW51
bVR5cGUpOgogICAgICAgICAgICAgICAgIF90eXBlID0gX3R5cGUucHJpbWl0aXZlX3R5cGUgICMg
RmFsbCB0aHJvdWdoIHRvIHByaW1pdGl2ZS4KICAgICAgICAgICAgIGlmIGlzaW5zdGFuY2UoX3R5
cGUsIFByaW1pdGl2ZVR5cGUpOgorICAgICAgICAgICAgICAgIGlmIF90eXBlLnJhd19uYW1lKCkg
aW4gWydhcnJheScsICdhbnknLCAnb2JqZWN0J106CisgICAgICAgICAgICAgICAgICAgIHJldHVy
biAnJiVzJyAlIHBhcmFtX25hbWUgaWYgbm90IHBhcmFtZXRlci5pc19vcHRpb25hbCBlbHNlIHBh
cmFtX25hbWUKICAgICAgICAgICAgICAgICByZXR1cm4gJyolcycgJSBwYXJhbV9uYW1lIGlmIHBh
cmFtZXRlci5pc19vcHRpb25hbCBlbHNlIHBhcmFtX25hbWUKLSAgICAgICAgICAgIHJldHVybiAn
JXMuY29weVJlZigpJyAlIHBhcmFtX25hbWUKKyAgICAgICAgICAgIHJldHVybiAnJiVzJyAlIHBh
cmFtX25hbWUgaWYgbm90IHBhcmFtZXRlci5pc19vcHRpb25hbCBlbHNlIHBhcmFtX25hbWUKIAog
ICAgICAgICBmb3IgcGFyYW1ldGVyIGluIGNvbW1hbmQuY2FsbF9wYXJhbWV0ZXJzOgogICAgICAg
ICAgICAgaW5fcGFyYW1fbmFtZSA9ICdpbl8lcycgJSBwYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0
cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMu
anNvbi1yZXN1bHQgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJz
Lmpzb24tcmVzdWx0CmluZGV4IDA4M2M2ZTIuLmUzNDllY2YgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13
aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFtZXRlcnMuanNvbi1yZXN1bHQKKysrIGIvU291
cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1h
bmRzLXdpdGgtb3B0aW9uYWwtY2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdApAQCAt
OTYzLDcgKzk2Myw3IEBAIHZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXI6OmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjCiAKICAgICBOU0FycmF5Lyo8
TlNTdHJpbmc+Ki8gKm9faW5fY29sdW1uTmFtZXM7CiAgICAgaWYgKGluX2NvbHVtbk5hbWVzKQot
ICAgICAgICBvX2luX2NvbHVtbk5hbWVzID0gb2JqY1N0cmluZ0FycmF5KGluX2NvbHVtbk5hbWVz
LmNvcHlSZWYoKSk7CisgICAgICAgIG9faW5fY29sdW1uTmFtZXMgPSBvYmpjU3RyaW5nQXJyYXko
aW5fY29sdW1uTmFtZXMpOwogICAgIE5TU3RyaW5nICpvX2luX25vdGVzOwogICAgIGlmIChpbl9u
b3RlcykKICAgICAgICAgb19pbl9ub3RlcyA9ICppbl9ub3RlczsKQEAgLTk3MiwyMiArOTcyLDIy
IEBAIHZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVB
bGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjCiAgICAgICAgIG9faW5fdGltZXN0YW1wID0gKmlu
X3RpbWVzdGFtcDsKICAgICBSV0lQcm90b2NvbEpTT05PYmplY3QgKm9faW5fdmFsdWVzOwogICAg
IGlmIChpbl92YWx1ZXMpCi0gICAgICAgIG9faW5fdmFsdWVzID0gW1tbUldJUHJvdG9jb2xKU09O
T2JqZWN0IGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDoqaW5fdmFsdWVzXSBhdXRvcmVs
ZWFzZV07CisgICAgICAgIG9faW5fdmFsdWVzID0gW1tbUldJUHJvdG9jb2xKU09OT2JqZWN0IGFs
bG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDppbl92YWx1ZXNdIGF1dG9yZWxlYXNlXTsKICAg
ICBSV0lQcm90b2NvbEpTT05PYmplY3QgKm9faW5fcGF5bG9hZDsKICAgICBpZiAoaW5fcGF5bG9h
ZCkKLSAgICAgICAgb19pbl9wYXlsb2FkID0gW1tbUldJUHJvdG9jb2xKU09OT2JqZWN0IGFsbG9j
XSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDoqaW5fcGF5bG9hZF0gYXV0b3JlbGVhc2VdOworICAg
ICAgICBvX2luX3BheWxvYWQgPSBbW1tSV0lQcm90b2NvbEpTT05PYmplY3QgYWxsb2NdIGluaXRX
aXRoSW5zcGVjdG9yT2JqZWN0OmluX3BheWxvYWRdIGF1dG9yZWxlYXNlXTsKICAgICBpbnQgb19p
bl9kYXRhYmFzZUlkOwogICAgIGlmIChpbl9kYXRhYmFzZUlkKQogICAgICAgICBvX2luX2RhdGFi
YXNlSWQgPSAqaW5fZGF0YWJhc2VJZDsKICAgICBSV0lQcm90b2NvbERhdGFiYXNlRXJyb3IgKm9f
aW5fc3FsRXJyb3I7CiAgICAgaWYgKGluX3NxbEVycm9yKQotICAgICAgICBvX2luX3NxbEVycm9y
ID0gW1tbUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yIGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9i
amVjdDppbl9zcWxFcnJvci5jb3B5UmVmKCldIGF1dG9yZWxlYXNlXTsKKyAgICAgICAgb19pbl9z
cWxFcnJvciA9IFtbW1JXSVByb3RvY29sRGF0YWJhc2VFcnJvciBhbGxvY10gaW5pdFdpdGhJbnNw
ZWN0b3JPYmplY3Q6aW5fc3FsRXJyb3JdIGF1dG9yZWxlYXNlXTsKICAgICBSV0lQcm90b2NvbERh
dGFiYXNlUHJpbWFyeUNvbG9ycyBvX2luX3NjcmVlbkNvbG9yOwogICAgIGlmIChpbl9zY3JlZW5D
b2xvcikKICAgICAgICAgb19pbl9zY3JlZW5Db2xvciA9IGZyb21Qcm90b2NvbFN0cmluZzxSV0lQ
cm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4oKmluX3NjcmVlbkNvbG9yKTsKICAgICBOU0Fy
cmF5Lyo8TlNTdHJpbmc+Ki8gKm9faW5fYWx0ZXJuYXRlQ29sb3JzOwogICAgIGlmIChpbl9hbHRl
cm5hdGVDb2xvcnMpCi0gICAgICAgIG9faW5fYWx0ZXJuYXRlQ29sb3JzID0gb2JqY1N0cmluZ0Fy
cmF5KGluX2FsdGVybmF0ZUNvbG9ycy5jb3B5UmVmKCkpOworICAgICAgICBvX2luX2FsdGVybmF0
ZUNvbG9ycyA9IG9iamNTdHJpbmdBcnJheShpbl9hbHRlcm5hdGVDb2xvcnMpOwogICAgIFJXSVBy
b3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzUHJpbnRDb2xvciBvX2lu
X3ByaW50Q29sb3I7CiAgICAgaWYgKGluX3ByaW50Q29sb3IpCiAgICAgICAgIG9faW5fcHJpbnRD
b2xvciA9IGZyb21Qcm90b2NvbFN0cmluZzxSV0lQcm90b2NvbERhdGFiYXNlRXhlY3V0ZUFsbE9w
dGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3I+KCppbl9wcmludENvbG9yKTsKQEAgLTEwMjIsMTUg
KzEwMjIsMTUgQEAgdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6
ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2EKICAgICAgICAgYmFja2VuZERpc3Bh
dGNoZXIoKS0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgV1RGOjptb3ZlKHJlc3VsdE9iamVjdCksIFN0
cmluZygpKTsKICAgICB9OwogCi0gICAgTlNBcnJheS8qPE5TU3RyaW5nPiovICpvX2luX2NvbHVt
bk5hbWVzID0gb2JqY1N0cmluZ0FycmF5KGluX2NvbHVtbk5hbWVzLmNvcHlSZWYoKSk7CisgICAg
TlNBcnJheS8qPE5TU3RyaW5nPiovICpvX2luX2NvbHVtbk5hbWVzID0gb2JqY1N0cmluZ0FycmF5
KCZpbl9jb2x1bW5OYW1lcyk7CiAgICAgTlNTdHJpbmcgKm9faW5fbm90ZXMgPSBpbl9ub3RlczsK
ICAgICBkb3VibGUgb19pbl90aW1lc3RhbXAgPSBpbl90aW1lc3RhbXA7Ci0gICAgUldJUHJvdG9j
b2xKU09OT2JqZWN0ICpvX2luX3ZhbHVlcyA9IFtbW1JXSVByb3RvY29sSlNPTk9iamVjdCBhbGxv
Y10gaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6aW5fdmFsdWVzXSBhdXRvcmVsZWFzZV07Ci0gICAg
UldJUHJvdG9jb2xKU09OT2JqZWN0ICpvX2luX3BheWxvYWQgPSBbW1tSV0lQcm90b2NvbEpTT05P
YmplY3QgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0OmluX3BheWxvYWRdIGF1dG9yZWxl
YXNlXTsKKyAgICBSV0lQcm90b2NvbEpTT05PYmplY3QgKm9faW5fdmFsdWVzID0gW1tbUldJUHJv
dG9jb2xKU09OT2JqZWN0IGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDomaW5fdmFsdWVz
XSBhdXRvcmVsZWFzZV07CisgICAgUldJUHJvdG9jb2xKU09OT2JqZWN0ICpvX2luX3BheWxvYWQg
PSBbW1tSV0lQcm90b2NvbEpTT05PYmplY3QgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0
OiZpbl9wYXlsb2FkXSBhdXRvcmVsZWFzZV07CiAgICAgaW50IG9faW5fZGF0YWJhc2VJZCA9IGlu
X2RhdGFiYXNlSWQ7Ci0gICAgUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yICpvX2luX3NxbEVycm9y
ID0gW1tbUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yIGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9i
amVjdDppbl9zcWxFcnJvci5jb3B5UmVmKCldIGF1dG9yZWxlYXNlXTsKKyAgICBSV0lQcm90b2Nv
bERhdGFiYXNlRXJyb3IgKm9faW5fc3FsRXJyb3IgPSBbW1tSV0lQcm90b2NvbERhdGFiYXNlRXJy
b3IgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0OiZpbl9zcWxFcnJvcl0gYXV0b3JlbGVh
c2VdOwogICAgIFJXSVByb3RvY29sRGF0YWJhc2VQcmltYXJ5Q29sb3JzIG9faW5fc2NyZWVuQ29s
b3IgPSBmcm9tUHJvdG9jb2xTdHJpbmc8UldJUHJvdG9jb2xEYXRhYmFzZVByaW1hcnlDb2xvcnM+
KGluX3NjcmVlbkNvbG9yKTsKLSAgICBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKm9faW5fYWx0ZXJu
YXRlQ29sb3JzID0gb2JqY1N0cmluZ0FycmF5KGluX2FsdGVybmF0ZUNvbG9ycy5jb3B5UmVmKCkp
OworICAgIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqb19pbl9hbHRlcm5hdGVDb2xvcnMgPSBvYmpj
U3RyaW5nQXJyYXkoJmluX2FsdGVybmF0ZUNvbG9ycyk7CiAgICAgUldJUHJvdG9jb2xEYXRhYmFz
ZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3Igb19pbl9wcmludENvbG9yID0g
ZnJvbVByb3RvY29sU3RyaW5nPFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlTm9PcHRpb25hbFBh
cmFtZXRlcnNQcmludENvbG9yPihpbl9wcmludENvbG9yKTsKIAogICAgIFttX2RlbGVnYXRlIGV4
ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1dpdGhFcnJvckNhbGxiYWNrOmVycm9yQ2FsbGJhY2sg
c3VjY2Vzc0NhbGxiYWNrOnN1Y2Nlc3NDYWxsYmFjayBjb2x1bW5OYW1lczpvX2luX2NvbHVtbk5h
bWVzIG5vdGVzOm9faW5fbm90ZXMgdGltZXN0YW1wOm9faW5fdGltZXN0YW1wIHZhbHVlczpvX2lu
X3ZhbHVlcyBwYXlsb2FkOm9faW5fcGF5bG9hZCBkYXRhYmFzZUlkOm9faW5fZGF0YWJhc2VJZCBz
cWxFcnJvcjpvX2luX3NxbEVycm9yIHNjcmVlbkNvbG9yOm9faW5fc2NyZWVuQ29sb3IgYWx0ZXJu
YXRlQ29sb3JzOm9faW5fYWx0ZXJuYXRlQ29sb3JzIHByaW50Q29sb3I6b19pbl9wcmludENvbG9y
XTsK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>255132</attachid>
            <date>2015-06-18 14:17:40 -0700</date>
            <delta_ts>2015-06-18 14:17:40 -0700</delta_ts>
            <desc>[PATCH] For Landing</desc>
            <filename>for-landing.patch</filename>
            <type>text/plain</type>
            <size>98125</size>
            <attacher name="Joseph Pecoraro">joepeck</attacher>
            
              <data encoding="base64">ZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cgYi9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvQ2hhbmdlTG9nCmluZGV4IDcyODMyZjIuLmM2NjRjZDcgMTAwNjQ0Ci0tLSBh
L1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL0phdmFTY3JpcHRD
b3JlL0NoYW5nZUxvZwpAQCAtMSwzICsxLDUxIEBACisyMDE1LTA2LTE4ICBCcmlhbiBKLiBCdXJn
ICA8YnVyZ0Bjcy53YXNoaW5ndG9uLmVkdT4KKworICAgICAgICBXZWIgSW5zcGVjdG9yOiBpbXBy
b3ZlIGdlbmVyYXRlZCB0eXBlcyBmb3Igb2JqZWN0cyBwYXNzZWQgdG8gYmFja2VuZCBjb21tYW5k
cworICAgICAgICBodHRwczovL2J1Z3Mud2Via2l0Lm9yZy9zaG93X2J1Zy5jZ2k/aWQ9MTQ2MDkx
CisKKyAgICAgICAgUmV2aWV3ZWQgYnkgSm9zZXBoIFBlY29yYXJvLgorCisgICAgICAgIFRoZSBt
YWluIGNoYW5nZSBpcyB0aGF0IG9iamVjdHMgcGFzc2VkIGluIHdpbGwgaGF2ZSBhIHR5cGUgbGlr
ZSBjb25zdCBUJiBvciBjb25zdCBUKiwKKyAgICAgICAgcmF0aGVyIHRoYW4gY29uc3QgUmVmUHRy
PFQ+JiYuIFRoZXNlIHByb3RvY29sIG9iamVjdHMgYXJlIG93bmVkIGJ5IHRoZSBnZW5lcmF0ZWQg
ZGlzcGF0Y2hlcgorICAgICAgICBtZXRob2RzIGFuZCBvbmx5IGV4aXN0IHRvIHBhc3MgZGF0YSB0
byBiYWNrZW5kIGNvbW1hbmQgaW1wbGVtZW50YXRpb25zLiBTbywgdGhlcmUgaXMgbm8KKyAgICAg
ICAgcmVhc29uIGZvciBjYWxsZWVzIHRvIGFkZCBhIHJlZmVyZW5jZSBvciB0YWtlIG93bmVyc2hp
cCBvZiB0aGVzZSBpbnB1dHMuCisKKyAgICAgICAgU29tZSBzbWFsbCBpbXByb3ZlbWVudHMgd2Vy
ZSBtYWRlIGluIHRoZSBjb2RlIGdlbmVyYXRvciB0byBzdGFuZGFyZGl6ZSBob3cgdGhlc2UKKyAg
ICAgICAgZXhwcmVzc2lvbnMgYXJlIGdlbmVyYXRlZCBmb3IgcGFyYW1ldGVycy4gT3B0aW9uYWwg
aW4gcGFyYW1ldGVycyBhcmUgbm93IHByZWZpeGVkIHdpdGgKKyAgICAgICAgJ29wdF9pbl8nIHRv
IG1ha2UgdGhlIGdlbmVyYXRlZCBtZXRob2Qgc2lnbmF0dXJlcyBhbmQgaW1wbGVtZW50YXRpb25z
IGNsZWFyZXIuCisKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9yVmFsdWVzLmNwcDoKKyAg
ICAgICAgKEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXlCYXNlOjpnZXQpOiBBZGQgY29uc3QgcXVh
bGlmaWVyLgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaDoKKyAgICAgICAg
KiBpbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvckRlYnVnZ2VyQWdlbnQuY3BwOgorICAgICAgICAo
SW5zcGVjdG9yOjpJbnNwZWN0b3JEZWJ1Z2dlckFnZW50OjpzZXRCcmVha3BvaW50QnlVcmwpOgor
ICAgICAgICAoSW5zcGVjdG9yOjpwYXJzZUxvY2F0aW9uKToKKyAgICAgICAgKEluc3BlY3Rvcjo6
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6c2V0QnJlYWtwb2ludCk6CisgICAgICAgIChJbnNwZWN0
b3I6Okluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbik6CisgICAgICAg
ICogaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFnZW50Lmg6CisgICAgICAgICog
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwOgorICAgICAgICAoSW5z
cGVjdG9yOjpJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlvbk9uKToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpzYXZlUmVzdWx0KToKKyAgICAgICAg
KEluc3BlY3Rvcjo6SW5zcGVjdG9yUnVudGltZUFnZW50OjpnZXRSdW50aW1lVHlwZXNGb3JWYXJp
YWJsZXNBdE9mZnNldHMpOgorICAgICAgICAqIGluc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVu
dGltZUFnZW50Lmg6CisKKyAgICAgICAgKiBpbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9n
ZW5lcmF0b3IucHk6IEFsd2F5cyBnZW5lcmF0ZSBQcmltaXRpdmVUeXBlKCdhcnJheScpLgorICAg
ICAgICAoQ3BwR2VuZXJhdG9yLmNwcF90eXBlX2Zvcl91bmNoZWNrZWRfZm9ybWFsX2luX3BhcmFt
ZXRlcik6IEFsdGVyIHRoZSB0eXBlIHNpZ25hdHVyZQorICAgICAgICBmb3IgYW4gdW5jaGVja2Vk
IGlucHV0IHRvIHVzZSBwb2ludGVycyBvciByZWZlcmVuY2VzLgorCisgICAgICAgICogaW5zcGVj
dG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRl
ci5weToKKyAgICAgICAgKENwcEJhY2tlbmREaXNwYXRjaGVySGVhZGVyR2VuZXJhdG9yLl9nZW5l
cmF0ZV9oYW5kbGVyX2RlY2xhcmF0aW9uX2Zvcl9jb21tYW5kKToKKyAgICAgICAgKENwcEJhY2tl
bmREaXNwYXRjaGVySGVhZGVyR2VuZXJhdG9yLl9nZW5lcmF0ZV9hc3luY19oYW5kbGVyX2RlY2xh
cmF0aW9uX2Zvcl9jb21tYW5kKToKKyAgICAgICAgTG9jYWwgdmFyaWFibGVzIGZvciBvcHRpb25h
bCBwYXJhbWV0ZXJzIG5vdyBoYXZlIHRoZSAnb3B0XycgcHJlZml4LgorCisgICAgICAgICogaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2lt
cGxlbWVudGF0aW9uLnB5OgorICAgICAgICAoQ3BwQmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRh
dGlvbkdlbmVyYXRvci5fZ2VuZXJhdGVfYXN5bmNfZGlzcGF0Y2hlcl9jbGFzc19mb3JfZG9tYWlu
KToKKyAgICAgICAgKENwcEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0b3Iu
X2dlbmVyYXRlX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb25fZm9yX2NvbW1hbmQpOgorICAgICAg
ICBMb2NhbCB2YXJpYWJsZXMgZm9yIG9wdGlvbmFsIHBhcmFtZXRlcnMgbm93IGhhdmUgdGhlICdv
cHRfJyBwcmVmaXguCisgICAgICAgIFNwbGl0IHBhcmFtZXRlck5hbWUgYW5kIHBhcmFtZXRlcktl
eSBpbnRvIHR3byBzZXBhcmF0ZSB0ZW1wbGF0ZSB2YXJpYWJsZXMgdG8gYXZvaWQgbWl4dXBzLgor
CisgICAgICAgICogaW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0
aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0OgorCiAyMDE1LTA2
LTE4ICBKb3NlcGggUGVjb3Jhcm8gIDxwZWNvcmFyb0BhcHBsZS5jb20+CiAKICAgICAgICAgVW5y
ZXZpZXdlZC4gUm9sbG91dCByMTg1NjcwIGFzIGl0IGNhdXNlZCBzb21lIHRlc3RzIHRvIGJlIGZs
YWtleS4KZGlmZiAtLWdpdCBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yVmFsdWVzLmNwcCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
VmFsdWVzLmNwcAppbmRleCA2NTIzMjgzLi41ODk2YWQ2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2
YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5jcHAKKysrIGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuY3BwCkBAIC04MzksNyArODM5
LDcgQEAgSW5zcGVjdG9yQXJyYXlCYXNlOjpJbnNwZWN0b3JBcnJheUJhc2UoKQogewogfQogCi1S
ZWZQdHI8SW5zcGVjdG9yVmFsdWU+IEluc3BlY3RvckFycmF5QmFzZTo6Z2V0KHNpemVfdCBpbmRl
eCkKK1JlZlB0cjxJbnNwZWN0b3JWYWx1ZT4gSW5zcGVjdG9yQXJyYXlCYXNlOjpnZXQoc2l6ZV90
IGluZGV4KSBjb25zdAogewogICAgIEFTU0VSVF9XSVRIX1NFQ1VSSVRZX0lNUExJQ0FUSU9OKGlu
ZGV4IDwgbV9kYXRhLnNpemUoKSk7CiAgICAgcmV0dXJuIG1fZGF0YVtpbmRleF07CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL0luc3BlY3RvclZhbHVlcy5oIGIv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JWYWx1ZXMuaAppbmRleCBi
YWZmY2IwLi5kYjA1MDM2IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclZhbHVlcy5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvSW5zcGVjdG9yVmFsdWVzLmgKQEAgLTI3OSw3ICsyNzksNyBAQCBwcm90ZWN0ZWQ6CiAgICAg
dm9pZCBwdXNoT2JqZWN0KFJlZlB0cjxJbnNwZWN0b3JPYmplY3RCYXNlPiYmKTsKICAgICB2b2lk
IHB1c2hBcnJheShSZWZQdHI8SW5zcGVjdG9yQXJyYXlCYXNlPiYmKTsKIAotICAgIFJlZlB0cjxJ
bnNwZWN0b3JWYWx1ZT4gZ2V0KHNpemVfdCBpbmRleCk7CisgICAgUmVmUHRyPEluc3BlY3RvclZh
bHVlPiBnZXQoc2l6ZV90IGluZGV4KSBjb25zdDsKIAogICAgIHZpcnR1YWwgdm9pZCB3cml0ZUpT
T04oU3RyaW5nQnVpbGRlciYgb3V0cHV0KSBjb25zdCBvdmVycmlkZTsKIApkaWZmIC0tZ2l0IGEv
U291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdnZXJB
Z2VudC5jcHAgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0
b3JEZWJ1Z2dlckFnZW50LmNwcAppbmRleCA1MmFkMjFmLi5hNzVlMGIyIDEwMDY0NAotLS0gYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JEZWJ1Z2dlckFn
ZW50LmNwcAorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNw
ZWN0b3JEZWJ1Z2dlckFnZW50LmNwcApAQCAtMjc1LDcgKzI3NSw3IEBAIGJvb2wgSW5zcGVjdG9y
RGVidWdnZXJBZ2VudDo6YnJlYWtwb2ludEFjdGlvbnNGcm9tUHJvdG9jb2woRXJyb3JTdHJpbmcm
IGVycm9yU3RyCiAgICAgcmV0dXJuIHRydWU7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRGVidWdnZXJB
Z2VudDo6c2V0QnJlYWtwb2ludEJ5VXJsKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgaW50IGxp
bmVOdW1iZXIsIGNvbnN0IFN0cmluZyogY29uc3Qgb3B0aW9uYWxVUkwsIGNvbnN0IFN0cmluZyog
Y29uc3Qgb3B0aW9uYWxVUkxSZWdleCwgY29uc3QgaW50KiBjb25zdCBvcHRpb25hbENvbHVtbk51
bWJlciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBvcHRpb25zLCBJbnNwZWN0b3I6
OlByb3RvY29sOjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiBvdXRCcmVha3BvaW50SWRlbnRpZmll
ciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6
OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMpCit2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OnNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBs
aW5lTnVtYmVyLCBjb25zdCBTdHJpbmcqIGNvbnN0IG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcq
IGNvbnN0IG9wdGlvbmFsVVJMUmVnZXgsIGNvbnN0IGludCogY29uc3Qgb3B0aW9uYWxDb2x1bW5O
dW1iZXIsIGNvbnN0IEluc3BlY3Rvck9iamVjdCogb3B0aW9ucywgSW5zcGVjdG9yOjpQcm90b2Nv
bDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCogb3V0QnJlYWtwb2ludElkZW50aWZpZXIsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dl
cjo6TG9jYXRpb24+PiYgbG9jYXRpb25zKQogewogICAgIGxvY2F0aW9ucyA9IEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj46
OmNyZWF0ZSgpOwogICAgIGlmICghb3B0aW9uYWxVUkwgPT0gIW9wdGlvbmFsVVJMUmVnZXgpIHsK
QEAgLTMyMSw3ICszMjEsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFr
cG9pbnRCeVVybChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBsaQogICAgICpvdXRCcmVh
a3BvaW50SWRlbnRpZmllciA9IGJyZWFrcG9pbnRJZGVudGlmaWVyOwogfQogCi1zdGF0aWMgYm9v
bCBwYXJzZUxvY2F0aW9uKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgSW5zcGVjdG9yT2JqZWN0
JiBsb2NhdGlvbiwgSlNDOjpTb3VyY2VJRCYgc291cmNlSUQsIHVuc2lnbmVkJiBsaW5lTnVtYmVy
LCB1bnNpZ25lZCYgY29sdW1uTnVtYmVyKQorc3RhdGljIGJvb2wgcGFyc2VMb2NhdGlvbihFcnJv
clN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbG9jYXRpb24sIEpT
Qzo6U291cmNlSUQmIHNvdXJjZUlELCB1bnNpZ25lZCYgbGluZU51bWJlciwgdW5zaWduZWQmIGNv
bHVtbk51bWJlcikKIHsKICAgICBTdHJpbmcgc2NyaXB0SURTdHI7CiAgICAgaWYgKCFsb2NhdGlv
bi5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzY3JpcHRJZCIpLCBzY3JpcHRJRFN0cikgfHwgIWxv
Y2F0aW9uLmdldEludGVnZXIoQVNDSUlMaXRlcmFsKCJsaW5lTnVtYmVyIiksIGxpbmVOdW1iZXIp
KSB7CkBAIC0zMzYsMTIgKzMzNiwxMiBAQCBzdGF0aWMgYm9vbCBwYXJzZUxvY2F0aW9uKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgSW5zcGVjdG9yT2JqZWN0JiBsb2NhdGlvbiwgSgogICAgIHJl
dHVybiB0cnVlOwogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFrcG9p
bnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0
PiYmIGxvY2F0aW9uLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIG9wdGlvbnMsIElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJ
ZGVudGlmaWVyLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9u
PiYgYWN0dWFsTG9jYXRpb24pCit2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6OnNldEJyZWFr
cG9pbnQoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIGxv
Y2F0aW9uLCBjb25zdCBJbnNwZWN0b3JPYmplY3QqIG9wdGlvbnMsIEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkRlYnVnZ2VyOjpCcmVha3BvaW50SWQqIG91dEJyZWFrcG9pbnRJZGVudGlmaWVyLCBSZWZQ
dHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkxvY2F0aW9uPiYgYWN0dWFsTG9jYXRp
b24pCiB7CiAgICAgSlNDOjpTb3VyY2VJRCBzb3VyY2VJRDsKICAgICB1bnNpZ25lZCBsaW5lTnVt
YmVyOwogICAgIHVuc2lnbmVkIGNvbHVtbk51bWJlcjsKLSAgICBpZiAoIXBhcnNlTG9jYXRpb24o
ZXJyb3JTdHJpbmcsICpsb2NhdGlvbiwgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJl
cikpCisgICAgaWYgKCFwYXJzZUxvY2F0aW9uKGVycm9yU3RyaW5nLCBsb2NhdGlvbiwgc291cmNl
SUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikpCiAgICAgICAgIHJldHVybjsKIAogICAgIFN0
cmluZyBjb25kaXRpb24gPSBlbXB0eVN0cmluZygpOwpAQCAtMzg4LDcgKzM4OCw3IEBAIHZvaWQg
SW5zcGVjdG9yRGVidWdnZXJBZ2VudDo6cmVtb3ZlQnJlYWtwb2ludChFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgYnJlYWtwCiAgICAgfQogfQogCi12b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdl
bnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgbG9jYXRpb24pCit2b2lkIEluc3BlY3RvckRlYnVnZ2Vy
QWdlbnQ6OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IEluc3BlY3Rvck9iamVjdCYgbG9jYXRpb24pCiB7CiAgICAgaWYgKG1fY29udGludWVUb0xvY2F0
aW9uQnJlYWtwb2ludElEICE9IEpTQzo6bm9CcmVha3BvaW50SUQpIHsKICAgICAgICAgc2NyaXB0
RGVidWdTZXJ2ZXIoKS5yZW1vdmVCcmVha3BvaW50KG1fY29udGludWVUb0xvY2F0aW9uQnJlYWtw
b2ludElEKTsKQEAgLTM5OCw3ICszOTgsNyBAQCB2b2lkIEluc3BlY3RvckRlYnVnZ2VyQWdlbnQ6
OmNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0CiAgICAg
SlNDOjpTb3VyY2VJRCBzb3VyY2VJRDsKICAgICB1bnNpZ25lZCBsaW5lTnVtYmVyOwogICAgIHVu
c2lnbmVkIGNvbHVtbk51bWJlcjsKLSAgICBpZiAoIXBhcnNlTG9jYXRpb24oZXJyb3JTdHJpbmcs
ICpsb2NhdGlvbiwgc291cmNlSUQsIGxpbmVOdW1iZXIsIGNvbHVtbk51bWJlcikpCisgICAgaWYg
KCFwYXJzZUxvY2F0aW9uKGVycm9yU3RyaW5nLCBsb2NhdGlvbiwgc291cmNlSUQsIGxpbmVOdW1i
ZXIsIGNvbHVtbk51bWJlcikpCiAgICAgICAgIHJldHVybjsKIAogICAgIFNjcmlwdEJyZWFrcG9p
bnQgYnJlYWtwb2ludChsaW5lTnVtYmVyLCBjb2x1bW5OdW1iZXIsICIiLCBmYWxzZSk7CmRpZmYg
LS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JE
ZWJ1Z2dlckFnZW50LmggYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50cy9J
bnNwZWN0b3JEZWJ1Z2dlckFnZW50LmgKaW5kZXggNzk0ODY0MC4uMjgyNDllMiAxMDA2NDQKLS0t
IGEvU291cmNlL0phdmFTY3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yRGVidWdn
ZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0lu
c3BlY3RvckRlYnVnZ2VyQWdlbnQuaApAQCAtNzEsMTAgKzcxLDEwIEBAIHB1YmxpYzoKICAgICB2
aXJ0dWFsIHZvaWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgc2V0
QnJlYWtwb2ludHNBY3RpdmUoRXJyb3JTdHJpbmcmLCBib29sIGFjdGl2ZSkgb3ZlcnJpZGU7Ci0g
ICAgdmlydHVhbCB2b2lkIHNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyYsIGludCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFs
VVJMUmVnZXgsIGNvbnN0IGludCogb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29s
OjpEZWJ1Z2dlcjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMp
IG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nJiwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGxvY2F0aW9uLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgb3B0aW9ucywgSW5zcGVjdG9y
OjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFrcG9pbnRJZCosIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+JiBhY3R1YWxMb2NhdGlvbikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIHNldEJyZWFrcG9pbnRCeVVybChFcnJvclN0cmluZyYsIGludCBsaW5l
TnVtYmVyLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFsVVJMLCBjb25zdCBTdHJpbmcqIG9wdGlvbmFs
VVJMUmVnZXgsIGNvbnN0IGludCogb3B0aW9uYWxDb2x1bW5OdW1iZXIsIGNvbnN0IEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0KiBvcHRpb25zLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dl
cjo6QnJlYWtwb2ludElkKiwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpMb2NhdGlvbj4+JiBsb2NhdGlvbnMpIG92ZXJyaWRl
OworICAgIHZpcnR1YWwgdm9pZCBzZXRCcmVha3BvaW50KEVycm9yU3RyaW5nJiwgY29uc3QgSW5z
cGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIGxvY2F0aW9uLCBjb25zdCBJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdCogb3B0aW9ucywgSW5zcGVjdG9yOjpQcm90b2NvbDo6RGVidWdnZXI6OkJyZWFr
cG9pbnRJZCosIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEZWJ1Z2dlcjo6TG9jYXRpb24+
JiBhY3R1YWxMb2NhdGlvbikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUJyZWFr
cG9pbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIGJyZWFrcG9pbnRJZGVudGlmaWVyKSBv
dmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgY29udGludWVUb0xvY2F0aW9uKEVycm9yU3RyaW5n
JiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBsb2NhdGlvbikgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGNvbnRpbnVlVG9Mb2NhdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IElu
c3BlY3Rvck9iamVjdCYgbG9jYXRpb24pIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBzZWFy
Y2hJbkNvbnRlbnQoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHNjcmlwdElELCBjb25zdCBT
dHJpbmcmIHF1ZXJ5LCBjb25zdCBib29sKiBvcHRpb25hbENhc2VTZW5zaXRpdmUsIGNvbnN0IGJv
b2wqIG9wdGlvbmFsSXNSZWdleCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PElu
c3BlY3Rvcjo6UHJvdG9jb2w6OkdlbmVyaWNUeXBlczo6U2VhcmNoTWF0Y2g+PiYpIG92ZXJyaWRl
OwogICAgIHZpcnR1YWwgdm9pZCBnZXRTY3JpcHRTb3VyY2UoRXJyb3JTdHJpbmcmLCBjb25zdCBT
dHJpbmcmIHNjcmlwdElELCBTdHJpbmcqIHNjcmlwdFNvdXJjZSkgb3ZlcnJpZGU7CiAgICAgdmly
dHVhbCB2b2lkIGdldEZ1bmN0aW9uRGV0YWlscyhFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYg
ZnVuY3Rpb25JZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRlYnVnZ2VyOjpGdW5jdGlv
bkRldGFpbHM+Jikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwIGIvU291cmNlL0phdmFT
Y3JpcHRDb3JlL2luc3BlY3Rvci9hZ2VudHMvSW5zcGVjdG9yUnVudGltZUFnZW50LmNwcAppbmRl
eCBmYWEyZGRiLi5lM2VjODYyIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL2FnZW50cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9KYXZh
U2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5jcHAKQEAg
LTEzNCw3ICsxMzQsNyBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6ZXZhbHVhdGUoRXJy
b3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIGV4cAogICAgIH0KIH0KIAotdm9p
ZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OmNhbGxGdW5jdGlvbk9uKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBleHByZXNzaW9u
LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yQXJyYXk+JiYgb3B0aW9uYWxBcmd1bWVudHMsIGNvbnN0
IGJvb2wqIGNvbnN0IGRvTm90UGF1c2VPbkV4Y2VwdGlvbnNBbmRNdXRlQ29uc29sZSwgY29uc3Qg
Ym9vbCogY29uc3QgcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4qIHdhc1Rocm93bikKK3ZvaWQg
SW5zcGVjdG9yUnVudGltZUFnZW50OjpjYWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0IFN0cmluZyYgZXhwcmVzc2lvbiwg
Y29uc3QgSW5zcGVjdG9yQXJyYXkqIG9wdGlvbmFsQXJndW1lbnRzLCBjb25zdCBib29sKiBjb25z
dCBkb05vdFBhdXNlT25FeGNlcHRpb25zQW5kTXV0ZUNvbnNvbGUsIGNvbnN0IGJvb2wqIGNvbnN0
IHJldHVybkJ5VmFsdWUsIGNvbnN0IGJvb2wqIGdlbmVyYXRlUHJldmlldywgUmVmUHRyPEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OlJlbW90ZU9iamVjdD4mIHJlc3VsdCwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6T3B0T3V0cHV0PGJvb2w+KiB3YXNUaHJvd24pCiB7CiAgICAgSW5qZWN0ZWRT
Y3JpcHQgaW5qZWN0ZWRTY3JpcHQgPSBtX2luamVjdGVkU2NyaXB0TWFuYWdlci0+aW5qZWN0ZWRT
Y3JpcHRGb3JPYmplY3RJZChvYmplY3RJZCk7CiAgICAgaWYgKGluamVjdGVkU2NyaXB0Lmhhc05v
VmFsdWUoKSkgewpAQCAtMjEwLDEyICsyMTAsMTIgQEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdl
bnQ6OmdldENvbGxlY3Rpb25FbnRyaWVzKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QK
ICAgICBpbmplY3RlZFNjcmlwdC5nZXRDb2xsZWN0aW9uRW50cmllcyhlcnJvclN0cmluZywgb2Jq
ZWN0SWQsIG9iamVjdEdyb3VwID8gKm9iamVjdEdyb3VwIDogU3RyaW5nKCksIHN0YXJ0LCBmZXRj
aCwgJmVudHJpZXMpOwogfQogCi12b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6c2F2ZVJlc3Vs
dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4mJiBjYWxsQXJndW1lbnQsIGNvbnN0IGludCogZXhlY3V0aW9uQ29udGV4dElk
LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8aW50Piogc2F2ZWRSZXN1bHRJbmRleCkK
K3ZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50OjpzYXZlUmVzdWx0KEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIGNhbGxBcmd1bWVudCwg
Y29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91
dHB1dDxpbnQ+KiBzYXZlZFJlc3VsdEluZGV4KQogewogICAgIEluamVjdGVkU2NyaXB0IGluamVj
dGVkU2NyaXB0OwogCiAgICAgU3RyaW5nIG9iamVjdElkOwotICAgIGlmIChjYWxsQXJndW1lbnQt
PmdldFN0cmluZyhBU0NJSUxpdGVyYWwoIm9iamVjdElkIiksIG9iamVjdElkKSkgeworICAgIGlm
IChjYWxsQXJndW1lbnQuZ2V0U3RyaW5nKEFTQ0lJTGl0ZXJhbCgib2JqZWN0SWQiKSwgb2JqZWN0
SWQpKSB7CiAgICAgICAgIGluamVjdGVkU2NyaXB0ID0gbV9pbmplY3RlZFNjcmlwdE1hbmFnZXIt
PmluamVjdGVkU2NyaXB0Rm9yT2JqZWN0SWQob2JqZWN0SWQpOwogICAgICAgICBpZiAoaW5qZWN0
ZWRTY3JpcHQuaGFzTm9WYWx1ZSgpKSB7CiAgICAgICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJ
TGl0ZXJhbCgiSW5zcGVjdGVkIGZyYW1lIGhhcyBnb25lIik7CkBAIC0yMjcsNyArMjI3LDcgQEAg
dm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnNhdmVSZXN1bHQoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBSZWZQdHI8SW4KICAgICAgICAgICAgIHJldHVybjsKICAgICB9CiAKLSAg
ICBpbmplY3RlZFNjcmlwdC5zYXZlUmVzdWx0KGVycm9yU3RyaW5nLCBjYWxsQXJndW1lbnQtPnRv
SlNPTlN0cmluZygpLCBzYXZlZFJlc3VsdEluZGV4KTsKKyAgICBpbmplY3RlZFNjcmlwdC5zYXZl
UmVzdWx0KGVycm9yU3RyaW5nLCBjYWxsQXJndW1lbnQudG9KU09OU3RyaW5nKCksIHNhdmVkUmVz
dWx0SW5kZXgpOwogfQogCiB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2VudDo6cmVsZWFzZU9iamVj
dChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQpCkBAIC0yNDcsNyArMjQ3LDcg
QEAgdm9pZCBJbnNwZWN0b3JSdW50aW1lQWdlbnQ6OnJ1bihFcnJvclN0cmluZyYpCiAgICAgLy8g
RklYTUU6IDxodHRwczovL3dlYmtpdC5vcmcvYi8xMjc2MzQ+IFdlYiBJbnNwZWN0b3I6IHN1cHBv
cnQgZGVidWdnaW5nIHdlYiB3b3JrZXJzCiB9CiAKLXZvaWQgSW5zcGVjdG9yUnVudGltZUFnZW50
OjpnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMoRXJyb3JTdHJpbmcmIGVycm9y
U3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mJiBsb2NhdGlv
bnMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29s
OjpSdW50aW1lOjpUeXBlRGVzY3JpcHRpb24+PiYgdHlwZURlc2NyaXB0aW9ucykKK3ZvaWQgSW5z
cGVjdG9yUnVudGltZUFnZW50OjpnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMo
RXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5
JiBsb2NhdGlvbnMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6
OlByb3RvY29sOjpSdW50aW1lOjpUeXBlRGVzY3JpcHRpb24+PiYgdHlwZURlc2NyaXB0aW9ucykK
IHsKICAgICBzdGF0aWMgY29uc3QgYm9vbCB2ZXJib3NlID0gZmFsc2U7CiAgICAgVk0mIHZtID0g
Z2xvYmFsVk0oKTsKQEAgLTI2MCw4ICsyNjAsOCBAQCB2b2lkIEluc3BlY3RvclJ1bnRpbWVBZ2Vu
dDo6Z2V0UnVudGltZVR5cGVzRm9yVmFyaWFibGVzQXRPZmZzZXRzKEVycm9yU3RyaW5nJiBlcgog
ICAgIGRvdWJsZSBzdGFydCA9IGN1cnJlbnRUaW1lTVMoKTsKICAgICB2bS50eXBlUHJvZmlsZXJM
b2coKS0+cHJvY2Vzc0xvZ0VudHJpZXMoQVNDSUlMaXRlcmFsKCJVc2VyIFF1ZXJ5IikpOwogCi0g
ICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsb2NhdGlvbnMtPmxlbmd0aCgpOyBpKyspIHsKLSAg
ICAgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IHZhbHVlID0gbG9jYXRpb25z
LT5nZXQoaSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBsb2NhdGlvbnMubGVuZ3RoKCk7
IGkrKykgeworICAgICAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4gdmFsdWUg
PSBsb2NhdGlvbnMuZ2V0KGkpOwogICAgICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBsb2Nh
dGlvbjsKICAgICAgICAgaWYgKCF2YWx1ZS0+YXNPYmplY3QobG9jYXRpb24pKSB7CiAgICAgICAg
ICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQXJyYXkgb2YgVHlwZUxvY2F0aW9uIG9i
amVjdHMgaGFzIGFuIG9iamVjdCB0aGF0IGRvZXMgbm90IGhhdmUgdHlwZSBvZiBUeXBlTG9jYXRp
b24uIik7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL2FnZW50
cy9JbnNwZWN0b3JSdW50aW1lQWdlbnQuaCBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0
b3IvYWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCmluZGV4IGJmMDVkZGMuLjI1ZjNkN2Mg
MTAwNjQ0Ci0tLSBhL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3IvYWdlbnRzL0luc3Bl
Y3RvclJ1bnRpbWVBZ2VudC5oCisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Iv
YWdlbnRzL0luc3BlY3RvclJ1bnRpbWVBZ2VudC5oCkBAIC02MSwxNSArNjEsMTUgQEAgcHVibGlj
OgogICAgIHZpcnR1YWwgdm9pZCBkaXNhYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGUgeyBtX2Vu
YWJsZWQgPSBmYWxzZTsgfQogICAgIHZpcnR1YWwgdm9pZCBwYXJzZShFcnJvclN0cmluZyYsIGNv
bnN0IFN0cmluZyYgZXhwcmVzc2lvbiwgSW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6U3lu
dGF4RXJyb3JUeXBlKiByZXN1bHQsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxTdHJp
bmc+KiBtZXNzYWdlLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6RXJyb3JS
YW5nZT4mKSBvdmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgZXZhbHVhdGUoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGV4cHJlc3Npb24sIGNvbnN0IFN0cmluZyogb2JqZWN0R3Jv
dXAsIGNvbnN0IGJvb2wqIGluY2x1ZGVDb21tYW5kTGluZUFQSSwgY29uc3QgYm9vbCogZG9Ob3RQ
YXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRl
eHRJZCwgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2
aWV3LCBjb25zdCBib29sKiBzYXZlUmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
UnVudGltZTo6UmVtb3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRP
dXRwdXQ8Ym9vbD4qIHdhc1Rocm93biwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGlu
dD4qIHNhdmVkUmVzdWx0SW5kZXgpIG92ZXJyaWRlIGZpbmFsOwotICAgIHZpcnR1YWwgdm9pZCBj
YWxsRnVuY3Rpb25PbihFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgb2JqZWN0SWQsIGNvbnN0
IFN0cmluZyYgZXhwcmVzc2lvbiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJy
YXk+JiYgb3B0aW9uYWxBcmd1bWVudHMsIGNvbnN0IGJvb2wqIGRvTm90UGF1c2VPbkV4Y2VwdGlv
bnNBbmRNdXRlQ29uc29sZSwgY29uc3QgYm9vbCogcmV0dXJuQnlWYWx1ZSwgY29uc3QgYm9vbCog
Z2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UmVt
b3RlT2JqZWN0PiYgcmVzdWx0LCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8Ym9vbD4q
IHdhc1Rocm93bikgb3ZlcnJpZGUgZmluYWw7CisgICAgdmlydHVhbCB2b2lkIGNhbGxGdW5jdGlv
bk9uKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RJZCwgY29uc3QgU3RyaW5nJiBl
eHByZXNzaW9uLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5KiBvcHRpb25hbEFyZ3Vt
ZW50cywgY29uc3QgYm9vbCogZG9Ob3RQYXVzZU9uRXhjZXB0aW9uc0FuZE11dGVDb25zb2xlLCBj
b25zdCBib29sKiByZXR1cm5CeVZhbHVlLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiByZXN1bHQs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxib29sPiogd2FzVGhyb3duKSBvdmVycmlk
ZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZU9iamVjdChFcnJvclN0cmluZyYsIGNv
bnN0IEVycm9yU3RyaW5nJiBvYmplY3RJZCkgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2
b2lkIGdldFByb3BlcnRpZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIG9iamVjdElkLCBj
b25zdCBib29sKiBvd25Qcm9wZXJ0aWVzLCBjb25zdCBib29sKiBnZW5lcmF0ZVByZXZpZXcsIFJl
ZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50
aW1lOjpQcm9wZXJ0eURlc2NyaXB0b3I+PiYgcmVzdWx0LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6SW50ZXJuYWxQcm9wZXJ0
eURlc2NyaXB0b3I+PiYgaW50ZXJuYWxQcm9wZXJ0aWVzKSBvdmVycmlkZSBmaW5hbDsKICAgICB2
aXJ0dWFsIHZvaWQgZ2V0RGlzcGxheWFibGVQcm9wZXJ0aWVzKEVycm9yU3RyaW5nJiwgY29uc3Qg
U3RyaW5nJiBvYmplY3RJZCwgY29uc3QgYm9vbCogZ2VuZXJhdGVQcmV2aWV3LCBSZWZQdHI8SW5z
cGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6UnVudGltZTo6UHJv
cGVydHlEZXNjcmlwdG9yPj4mIHJlc3VsdCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFy
cmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OlJ1bnRpbWU6OkludGVybmFsUHJvcGVydHlEZXNjcmlw
dG9yPj4mIGludGVybmFsUHJvcGVydGllcykgb3ZlcnJpZGUgZmluYWw7CiAgICAgdmlydHVhbCB2
b2lkIGdldENvbGxlY3Rpb25FbnRyaWVzKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmpl
Y3RJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RHcm91cCwgY29uc3QgaW50KiBzdGFydEluZGV4LCBj
b25zdCBpbnQqIG51bWJlclRvRmV0Y2gsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJh
eTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpDb2xsZWN0aW9uRW50cnk+PiYgZW50cmll
cykgb3ZlcnJpZGUgZmluYWw7Ci0gICAgdmlydHVhbCB2b2lkIHNhdmVSZXN1bHQoRXJyb3JTdHJp
bmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgY2FsbEFyZ3Vt
ZW50LCBjb25zdCBpbnQqIGV4ZWN1dGlvbkNvbnRleHRJZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PGludD4qIHNhdmVkUmVzdWx0SW5kZXgpIG92ZXJyaWRlIGZpbmFsOworICAgIHZp
cnR1YWwgdm9pZCBzYXZlUmVzdWx0KEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3QmIGNhbGxBcmd1bWVudCwgY29uc3QgaW50KiBleGVjdXRpb25Db250ZXh0SWQs
IEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91dHB1dDxpbnQ+KiBzYXZlZFJlc3VsdEluZGV4KSBv
dmVycmlkZSBmaW5hbDsKICAgICB2aXJ0dWFsIHZvaWQgcmVsZWFzZU9iamVjdEdyb3VwKEVycm9y
U3RyaW5nJiwgY29uc3QgU3RyaW5nJiBvYmplY3RHcm91cCkgb3ZlcnJpZGUgZmluYWw7CiAgICAg
dmlydHVhbCB2b2lkIHJ1bihFcnJvclN0cmluZyYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9p
ZCBnZXRSdW50aW1lVHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMoRXJyb3JTdHJpbmcmLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mJiBsb2NhdGlvbnMsIFJlZlB0cjxJ
bnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpU
eXBlRGVzY3JpcHRpb24+PiYpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBnZXRSdW50aW1l
VHlwZXNGb3JWYXJpYWJsZXNBdE9mZnNldHMoRXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6
Okluc3BlY3RvckFycmF5JiBsb2NhdGlvbnMsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpB
cnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpUeXBlRGVzY3JpcHRpb24+PiYpIG92
ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBlbmFibGVUeXBlUHJvZmlsZXIoRXJyb3JTdHJpbmcm
KSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgZGlzYWJsZVR5cGVQcm9maWxlcihFcnJvclN0
cmluZyYpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBnZXRCYXNpY0Jsb2NrcyhFcnJvclN0
cmluZyYsIGNvbnN0IFN0cmluZyYgaW5fc291cmNlSUQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3Rv
Y29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpCYXNpY0Jsb2NrPj4mIG91
dF9iYXNpY0Jsb2Nrcykgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENv
cmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5IGIvU291cmNlL0ph
dmFTY3JpcHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vY3BwX2dlbmVyYXRvci5weQpp
bmRleCBkZjkwYmU5Li5lZGQzMzBkIDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9jcHBfZ2VuZXJhdG9yLnB5CisrKyBiL1NvdXJjZS9K
YXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2NwcF9nZW5lcmF0b3IucHkK
QEAgLTM5LDYgKzM5LDcgQEAgX1BSSU1JVElWRV9UT19DUFBfTkFNRV9NQVAgPSB7CiAgICAgJ251
bWJlcic6ICdkb3VibGUnLAogICAgICdzdHJpbmcnOiAnU3RyaW5nJywKICAgICAnb2JqZWN0Jzog
J0luc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JywKKyAgICAnYXJyYXknOiAnSW5zcGVjdG9yOjpJ
bnNwZWN0b3JBcnJheScsCiAgICAgJ2FueSc6ICdJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlJwog
fQogCkBAIC0xMTksOSArMTIwLDE3IEBAIGNsYXNzIENwcEdlbmVyYXRvcjoKIAogICAgICAgICAj
IFRoaXMgaGFuZGxlcyB0aGUgJ2FueScgdHlwZSBhbmQgb2JqZWN0cyB3aXRoIGRlZmluZWQgcHJv
cGVydGllcy4KICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgT2JqZWN0VHlwZSkgb3IgX3R5
cGUucXVhbGlmaWVkX25hbWUoKSBpcyAnb2JqZWN0JzoKLSAgICAgICAgICAgIHJldHVybiAnY29u
c3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmJworICAgICAgICAgICAgY3Bw
X25hbWUgPSAnSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QnCisgICAgICAgICAgICBpZiBwYXJh
bWV0ZXIuaXNfb3B0aW9uYWw6CisgICAgICAgICAgICAgICAgcmV0dXJuICdjb25zdCAlcyonICUg
Y3BwX25hbWUKKyAgICAgICAgICAgIGVsc2U6CisgICAgICAgICAgICAgICAgcmV0dXJuICdjb25z
dCAlcyYnICUgY3BwX25hbWUKICAgICAgICAgaWYgaXNpbnN0YW5jZShfdHlwZSwgQXJyYXlUeXBl
KToKLSAgICAgICAgICAgIHJldHVybiAnY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9y
QXJyYXk+JiYnCisgICAgICAgICAgICBjcHBfbmFtZSA9ICdJbnNwZWN0b3I6Okluc3BlY3RvckFy
cmF5JworICAgICAgICAgICAgaWYgcGFyYW1ldGVyLmlzX29wdGlvbmFsOgorICAgICAgICAgICAg
ICAgIHJldHVybiAnY29uc3QgJXMqJyAlIGNwcF9uYW1lCisgICAgICAgICAgICBlbHNlOgorICAg
ICAgICAgICAgICAgIHJldHVybiAnY29uc3QgJXMmJyAlIGNwcF9uYW1lCiAgICAgICAgIGlmIGlz
aW5zdGFuY2UoX3R5cGUsIFByaW1pdGl2ZVR5cGUpOgogICAgICAgICAgICAgY3BwX25hbWUgPSBD
cHBHZW5lcmF0b3IuY3BwX25hbWVfZm9yX3ByaW1pdGl2ZV90eXBlKF90eXBlKQogICAgICAgICAg
ICAgaWYgcGFyYW1ldGVyLmlzX29wdGlvbmFsOgpkaWZmIC0tZ2l0IGEvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlz
cGF0Y2hlcl9oZWFkZXIucHkgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3Njcmlw
dHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weQppbmRl
eCAyM2U3ZDk5Li41NGJkYjNlIDEwMDc1NQotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5z
cGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2hl
YWRlci5weQorKysgYi9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29k
ZWdlbi9nZW5lcmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2hlYWRlci5weQpAQCAtMTI3LDcg
KzEyNywxMSBAQCBjbGFzcyBDcHBCYWNrZW5kRGlzcGF0Y2hlckhlYWRlckdlbmVyYXRvcihHZW5l
cmF0b3IpOgogICAgICAgICBsaW5lcyA9IFtdCiAgICAgICAgIHBhcmFtZXRlcnMgPSBbJ0Vycm9y
U3RyaW5nJiddCiAgICAgICAgIGZvciBfcGFyYW1ldGVyIGluIGNvbW1hbmQuY2FsbF9wYXJhbWV0
ZXJzOgotICAgICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQoIiVzIGluXyVzIiAlIChDcHBHZW5l
cmF0b3IuY3BwX3R5cGVfZm9yX3VuY2hlY2tlZF9mb3JtYWxfaW5fcGFyYW1ldGVyKF9wYXJhbWV0
ZXIpLCBfcGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lKSkKKyAgICAgICAgICAgIHBhcmFtZXRlcl9u
YW1lID0gJ2luXycgKyBfcGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lCisgICAgICAgICAgICBpZiBf
cGFyYW1ldGVyLmlzX29wdGlvbmFsOgorICAgICAgICAgICAgICAgIHBhcmFtZXRlcl9uYW1lID0g
J29wdF8nICsgcGFyYW1ldGVyX25hbWUKKworICAgICAgICAgICAgcGFyYW1ldGVycy5hcHBlbmQo
IiVzICVzIiAlIChDcHBHZW5lcmF0b3IuY3BwX3R5cGVfZm9yX3VuY2hlY2tlZF9mb3JtYWxfaW5f
cGFyYW1ldGVyKF9wYXJhbWV0ZXIpLCBwYXJhbWV0ZXJfbmFtZSkpCiAKICAgICAgICAgICAgIGlm
IGlzaW5zdGFuY2UoX3BhcmFtZXRlci50eXBlLCBFbnVtVHlwZSkgYW5kIF9wYXJhbWV0ZXIucGFy
YW1ldGVyX25hbWUgbm90IGluIHVzZWRfZW51bV9uYW1lczoKICAgICAgICAgICAgICAgICBsaW5l
cy5hcHBlbmQoc2VsZi5fZ2VuZXJhdGVfYW5vbnltb3VzX2VudW1fZm9yX3BhcmFtZXRlcihfcGFy
YW1ldGVyLCBjb21tYW5kKSkKQEAgLTE1NSw3ICsxNTksMTEgQEAgY2xhc3MgQ3BwQmFja2VuZERp
c3BhdGNoZXJIZWFkZXJHZW5lcmF0b3IoR2VuZXJhdG9yKToKIAogICAgICAgICBpbl9wYXJhbWV0
ZXJzID0gWydFcnJvclN0cmluZyYnXQogICAgICAgICBmb3IgX3BhcmFtZXRlciBpbiBjb21tYW5k
LmNhbGxfcGFyYW1ldGVyczoKLSAgICAgICAgICAgIGluX3BhcmFtZXRlcnMuYXBwZW5kKCIlcyBp
bl8lcyIgJSAoQ3BwR2VuZXJhdG9yLmNwcF90eXBlX2Zvcl91bmNoZWNrZWRfZm9ybWFsX2luX3Bh
cmFtZXRlcihfcGFyYW1ldGVyKSwgX3BhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZSkpCisgICAgICAg
ICAgICBwYXJhbWV0ZXJfbmFtZSA9ICdpbl8nICsgX3BhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZQor
ICAgICAgICAgICAgaWYgX3BhcmFtZXRlci5pc19vcHRpb25hbDoKKyAgICAgICAgICAgICAgICBw
YXJhbWV0ZXJfbmFtZSA9ICdvcHRfJyArIHBhcmFtZXRlcl9uYW1lCisKKyAgICAgICAgICAgIGlu
X3BhcmFtZXRlcnMuYXBwZW5kKCIlcyAlcyIgJSAoQ3BwR2VuZXJhdG9yLmNwcF90eXBlX2Zvcl91
bmNoZWNrZWRfZm9ybWFsX2luX3BhcmFtZXRlcihfcGFyYW1ldGVyKSwgcGFyYW1ldGVyX25hbWUp
KQogICAgICAgICBpbl9wYXJhbWV0ZXJzLmFwcGVuZCgiUmVmPCVzPiYmIGNhbGxiYWNrIiAlIGNh
bGxiYWNrTmFtZSkKIAogICAgICAgICBvdXRfcGFyYW1ldGVycyA9IFtdCmRpZmYgLS1naXQgYS9T
b3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9j
cHBfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5IGIvU291cmNlL0phdmFTY3Jp
cHRDb3JlL2luc3BlY3Rvci9zY3JpcHRzL2NvZGVnZW4vZ2VuZXJhdGVfY3BwX2JhY2tlbmRfZGlz
cGF0Y2hlcl9pbXBsZW1lbnRhdGlvbi5weQppbmRleCBkY2Q2NjRhLi4zNTBmMDg1IDEwMDc1NQot
LS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5l
cmF0ZV9jcHBfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJj
ZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX2NwcF9i
YWNrZW5kX2Rpc3BhdGNoZXJfaW1wbGVtZW50YXRpb24ucHkKQEAgLTEzOSw2ICsxMzksNyBAQCBj
bGFzcyBDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRv
cik6CiAgICAgICAgIGZvciBwYXJhbWV0ZXIgaW4gY29tbWFuZC5yZXR1cm5fcGFyYW1ldGVyczoK
ICAgICAgICAgICAgIHBhcmFtX2FyZ3MgPSB7CiAgICAgICAgICAgICAgICAgJ2tleWVkU2V0TWV0
aG9kJzogQ3BwR2VuZXJhdG9yLmNwcF9zZXR0ZXJfbWV0aG9kX2Zvcl90eXBlKHBhcmFtZXRlci50
eXBlKSwKKyAgICAgICAgICAgICAgICAncGFyYW1ldGVyS2V5JzogcGFyYW1ldGVyLnBhcmFtZXRl
cl9uYW1lLAogICAgICAgICAgICAgICAgICdwYXJhbWV0ZXJOYW1lJzogcGFyYW1ldGVyLnBhcmFt
ZXRlcl9uYW1lLAogICAgICAgICAgICAgICAgICdwYXJhbWV0ZXJUeXBlJzogQ3BwR2VuZXJhdG9y
LmNwcF90eXBlX2Zvcl9zdGFja19pbl9wYXJhbWV0ZXIocGFyYW1ldGVyKSwKICAgICAgICAgICAg
IH0KQEAgLTE0OCwxNCArMTQ5LDE0IEBAIGNsYXNzIENwcEJhY2tlbmREaXNwYXRjaGVySW1wbGVt
ZW50YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgICAgIGlmIHBhcmFtZXRlci5p
c19vcHRpb25hbDoKICAgICAgICAgICAgICAgICBpZiBDcHBHZW5lcmF0b3Iuc2hvdWxkX3VzZV93
cmFwcGVyX2Zvcl9yZXR1cm5fdHlwZShwYXJhbWV0ZXIudHlwZSk6CiAgICAgICAgICAgICAgICAg
ICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAgaWYgKCUocGFyYW1ldGVy
TmFtZSlzLmlzQXNzaWduZWQoKSknICUgcGFyYW1fYXJncykKLSAgICAgICAgICAgICAgICAgICAg
b3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICAgICAganNvbk1lc3NhZ2UtPiUo
a2V5ZWRTZXRNZXRob2QpcyhBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVyTmFtZSlzIiksICUocGFy
YW1ldGVyTmFtZSlzLmdldFZhbHVlKCkpOycgJSBwYXJhbV9hcmdzKQorICAgICAgICAgICAgICAg
ICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgICAgICBqc29uTWVzc2Fn
ZS0+JShrZXllZFNldE1ldGhvZClzKEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0ZXJLZXkpcyIpLCAl
KHBhcmFtZXRlck5hbWUpcy5nZXRWYWx1ZSgpKTsnICUgcGFyYW1fYXJncykKICAgICAgICAgICAg
ICAgICBlbHNlOgogICAgICAgICAgICAgICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRz
LmFwcGVuZCgnICAgIGlmICglKHBhcmFtZXRlck5hbWUpcyknICUgcGFyYW1fYXJncykKLSAgICAg
ICAgICAgICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICAgICAg
anNvbk1lc3NhZ2UtPiUoa2V5ZWRTZXRNZXRob2QpcyhBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVy
TmFtZSlzIiksICUocGFyYW1ldGVyTmFtZSlzKTsnICUgcGFyYW1fYXJncykKKyAgICAgICAgICAg
ICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICAgICAganNvbk1l
c3NhZ2UtPiUoa2V5ZWRTZXRNZXRob2QpcyhBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVyS2V5KXMi
KSwgJShwYXJhbWV0ZXJOYW1lKXMpOycgJSBwYXJhbV9hcmdzKQogICAgICAgICAgICAgZWxpZiBw
YXJhbWV0ZXIudHlwZS5pc19lbnVtKCk6Ci0gICAgICAgICAgICAgICAgb3V0X3BhcmFtZXRlcl9h
c3NpZ25tZW50cy5hcHBlbmQoJyAgICBqc29uTWVzc2FnZS0+JShrZXllZFNldE1ldGhvZClzKEFT
Q0lJTGl0ZXJhbCgiJShwYXJhbWV0ZXJOYW1lKXMiKSwgSW5zcGVjdG9yOjpQcm90b2NvbDo6Z2V0
RW51bUNvbnN0YW50VmFsdWUoJShwYXJhbWV0ZXJOYW1lKXMpKTsnICUgcGFyYW1fYXJncykKKyAg
ICAgICAgICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgIGpzb25N
ZXNzYWdlLT4lKGtleWVkU2V0TWV0aG9kKXMoQVNDSUlMaXRlcmFsKCIlKHBhcmFtZXRlcktleSlz
IiksIEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldEVudW1Db25zdGFudFZhbHVlKCUocGFyYW1ldGVy
TmFtZSlzKSk7JyAlIHBhcmFtX2FyZ3MpCiAgICAgICAgICAgICBlbHNlOgotICAgICAgICAgICAg
ICAgIG91dF9wYXJhbWV0ZXJfYXNzaWdubWVudHMuYXBwZW5kKCcgICAganNvbk1lc3NhZ2UtPiUo
a2V5ZWRTZXRNZXRob2QpcyhBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVyTmFtZSlzIiksICUocGFy
YW1ldGVyTmFtZSlzKTsnICUgcGFyYW1fYXJncykKKyAgICAgICAgICAgICAgICBvdXRfcGFyYW1l
dGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgIGpzb25NZXNzYWdlLT4lKGtleWVkU2V0TWV0aG9k
KXMoQVNDSUlMaXRlcmFsKCIlKHBhcmFtZXRlcktleSlzIiksICUocGFyYW1ldGVyTmFtZSlzKTsn
ICUgcGFyYW1fYXJncykKIAogICAgICAgICBhc3luY19hcmdzID0gewogICAgICAgICAgICAgJ2Rv
bWFpbk5hbWUnOiBkb21haW4uZG9tYWluX25hbWUsCkBAIC0xNzMsMjYgKzE3NCw0MCBAQCBjbGFz
cyBDcHBCYWNrZW5kRGlzcGF0Y2hlckltcGxlbWVudGF0aW9uR2VuZXJhdG9yKEdlbmVyYXRvcik6
CiAgICAgICAgIG1ldGhvZF9wYXJhbWV0ZXJzID0gWydlcnJvciddCiAKICAgICAgICAgZm9yIHBh
cmFtZXRlciBpbiBjb21tYW5kLmNhbGxfcGFyYW1ldGVyczoKKyAgICAgICAgICAgIHBhcmFtZXRl
cl9uYW1lID0gJ2luXycgKyBwYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUKKyAgICAgICAgICAgIGlm
IHBhcmFtZXRlci5pc19vcHRpb25hbDoKKyAgICAgICAgICAgICAgICBwYXJhbWV0ZXJfbmFtZSA9
ICdvcHRfJyArIHBhcmFtZXRlcl9uYW1lCisKICAgICAgICAgICAgIG91dF9zdWNjZXNzX2FyZ3Vt
ZW50ID0gJ251bGxwdHInCiAgICAgICAgICAgICBpZiBwYXJhbWV0ZXIuaXNfb3B0aW9uYWw6Ci0g
ICAgICAgICAgICAgICAgb3V0X3N1Y2Nlc3NfYXJndW1lbnQgPSAnJiVzX3ZhbHVlRm91bmQnICUg
cGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lCi0gICAgICAgICAgICAgICAgaW5fcGFyYW1ldGVyX2Rl
Y2xhcmF0aW9ucy5hcHBlbmQoJyAgICBib29sICVzX3ZhbHVlRm91bmQgPSBmYWxzZTsnICUgcGFy
YW1ldGVyLnBhcmFtZXRlcl9uYW1lKQorICAgICAgICAgICAgICAgIG91dF9zdWNjZXNzX2FyZ3Vt
ZW50ID0gJyYlc192YWx1ZUZvdW5kJyAlIHBhcmFtZXRlcl9uYW1lCisgICAgICAgICAgICAgICAg
aW5fcGFyYW1ldGVyX2RlY2xhcmF0aW9ucy5hcHBlbmQoJyAgICBib29sICVzX3ZhbHVlRm91bmQg
PSBmYWxzZTsnICUgcGFyYW1ldGVyX25hbWUpCisKKyAgICAgICAgICAgICMgTm93IGFkZCBhcHBy
b3ByaWF0ZSBvcGVyYXRvcnMuCisgICAgICAgICAgICBwYXJhbWV0ZXJfZXhwcmVzc2lvbiA9IHBh
cmFtZXRlcl9uYW1lCiAKLSAgICAgICAgICAgIHBhcmFtZXRlcl9leHByZXNzaW9uID0gJ2luXycg
KyBwYXJhbWV0ZXIucGFyYW1ldGVyX25hbWUKICAgICAgICAgICAgIGlmIENwcEdlbmVyYXRvci5z
aG91bGRfdXNlX3JlZmVyZW5jZXNfZm9yX3R5cGUocGFyYW1ldGVyLnR5cGUpOgotICAgICAgICAg
ICAgICAgIHBhcmFtZXRlcl9leHByZXNzaW9uID0gJyVzLmNvcHlSZWYoKScgJSBwYXJhbWV0ZXJf
ZXhwcmVzc2lvbgorICAgICAgICAgICAgICAgIGlmIHBhcmFtZXRlci5pc19vcHRpb25hbDoKKyAg
ICAgICAgICAgICAgICAgICAgcGFyYW1ldGVyX2V4cHJlc3Npb24gPSAnJXMuZ2V0KCknICUgcGFy
YW1ldGVyX2V4cHJlc3Npb24KKyAgICAgICAgICAgICAgICBlbHNlOgorICAgICAgICAgICAgICAg
ICAgICAjIFRoaXMgYXNzdW1lcyB0aGF0IHdlIGhhdmUgYWxyZWFkeSBwcm92ZWQgdGhlIG9iamVj
dCBpcyBub24tbnVsbC4KKyAgICAgICAgICAgICAgICAgICAgIyBJZiBhIHJlcXVpcmVkIHByb3Bl
cnR5IGlzIG1pc3NpbmcsIEluc3BlY3RvckJhY2tlbmQ6OmdldE9iamVjdCB3aWxsCisgICAgICAg
ICAgICAgICAgICAgICMgYXBwZW5kIGEgcHJvdG9jb2wgZXJyb3IsIGFuZCB0aGUgbWV0aG9kIGRp
c3BhdGNoZXIgd2lsbCByZXR1cm4gd2l0aG91dAorICAgICAgICAgICAgICAgICAgICAjIGludm9r
aW5nIHRoZSBiYWNrZW5kIG1ldGhvZCAoYW5kIGRlcmVmZXJlbmNpbmcgdGhlIG9iamVjdCkuCisg
ICAgICAgICAgICAgICAgICAgIHBhcmFtZXRlcl9leHByZXNzaW9uID0gJyolcycgJSBwYXJhbWV0
ZXJfZXhwcmVzc2lvbgogICAgICAgICAgICAgZWxpZiBwYXJhbWV0ZXIuaXNfb3B0aW9uYWw6CiAg
ICAgICAgICAgICAgICAgcGFyYW1ldGVyX2V4cHJlc3Npb24gPSAnJiVzJyAlIHBhcmFtZXRlcl9l
eHByZXNzaW9uCiAKICAgICAgICAgICAgIHBhcmFtX2FyZ3MgPSB7CiAgICAgICAgICAgICAgICAg
J3BhcmFtZXRlclR5cGUnOiBDcHBHZW5lcmF0b3IuY3BwX3R5cGVfZm9yX3N0YWNrX2luX3BhcmFt
ZXRlcihwYXJhbWV0ZXIpLAotICAgICAgICAgICAgICAgICdwYXJhbWV0ZXJOYW1lJzogcGFyYW1l
dGVyLnBhcmFtZXRlcl9uYW1lLAorICAgICAgICAgICAgICAgICdwYXJhbWV0ZXJLZXknOiBwYXJh
bWV0ZXIucGFyYW1ldGVyX25hbWUsCisgICAgICAgICAgICAgICAgJ3BhcmFtZXRlck5hbWUnOiBw
YXJhbWV0ZXJfbmFtZSwKICAgICAgICAgICAgICAgICAncGFyYW1ldGVyRXhwcmVzc2lvbic6IHBh
cmFtZXRlcl9leHByZXNzaW9uLAogICAgICAgICAgICAgICAgICdrZXllZEdldE1ldGhvZCc6IENw
cEdlbmVyYXRvci5jcHBfZ2V0dGVyX21ldGhvZF9mb3JfdHlwZShwYXJhbWV0ZXIudHlwZSksCiAg
ICAgICAgICAgICAgICAgJ3N1Y2Nlc3NPdXRQYXJhbSc6IG91dF9zdWNjZXNzX2FyZ3VtZW50CiAg
ICAgICAgICAgICB9CiAKLSAgICAgICAgICAgIGluX3BhcmFtZXRlcl9kZWNsYXJhdGlvbnMuYXBw
ZW5kKCcgICAgJShwYXJhbWV0ZXJUeXBlKXMgaW5fJShwYXJhbWV0ZXJOYW1lKXMgPSBCYWNrZW5k
RGlzcGF0Y2hlcjo6JShrZXllZEdldE1ldGhvZClzKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVND
SUlMaXRlcmFsKCIlKHBhcmFtZXRlck5hbWUpcyIpLCAlKHN1Y2Nlc3NPdXRQYXJhbSlzLCBwcm90
b2NvbEVycm9ycy5nZXQoKSk7JyAlIHBhcmFtX2FyZ3MpCisgICAgICAgICAgICBpbl9wYXJhbWV0
ZXJfZGVjbGFyYXRpb25zLmFwcGVuZCgnICAgICUocGFyYW1ldGVyVHlwZSlzICUocGFyYW1ldGVy
TmFtZSlzID0gQmFja2VuZERpc3BhdGNoZXI6OiUoa2V5ZWRHZXRNZXRob2QpcyhwYXJhbXNDb250
YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgiJShwYXJhbWV0ZXJLZXkpcyIpLCAlKHN1Y2Nlc3NP
dXRQYXJhbSlzLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7JyAlIHBhcmFtX2FyZ3MpCiAKICAgICAg
ICAgICAgIGlmIHBhcmFtZXRlci5pc19vcHRpb25hbDoKICAgICAgICAgICAgICAgICBvcHRpb25h
bF9pbl9wYXJhbWV0ZXJfc3RyaW5nID0gJyUocGFyYW1ldGVyTmFtZSlzX3ZhbHVlRm91bmQgPyAl
KHBhcmFtZXRlckV4cHJlc3Npb24pcyA6IG51bGxwdHInICUgcGFyYW1fYXJncwpAQCAtMjE3LDYg
KzIzMiw3IEBAIGNsYXNzIENwcEJhY2tlbmREaXNwYXRjaGVySW1wbGVtZW50YXRpb25HZW5lcmF0
b3IoR2VuZXJhdG9yKToKICAgICAgICAgICAgIGZvciBwYXJhbWV0ZXIgaW4gY29tbWFuZC5yZXR1
cm5fcGFyYW1ldGVyczoKICAgICAgICAgICAgICAgICBwYXJhbV9hcmdzID0gewogICAgICAgICAg
ICAgICAgICAgICAncGFyYW1ldGVyVHlwZSc6IENwcEdlbmVyYXRvci5jcHBfdHlwZV9mb3Jfc3Rh
Y2tfb3V0X3BhcmFtZXRlcihwYXJhbWV0ZXIpLAorICAgICAgICAgICAgICAgICAgICAncGFyYW1l
dGVyS2V5JzogcGFyYW1ldGVyLnBhcmFtZXRlcl9uYW1lLAogICAgICAgICAgICAgICAgICAgICAn
cGFyYW1ldGVyTmFtZSc6IHBhcmFtZXRlci5wYXJhbWV0ZXJfbmFtZSwKICAgICAgICAgICAgICAg
ICAgICAgJ2tleWVkU2V0TWV0aG9kJzogQ3BwR2VuZXJhdG9yLmNwcF9zZXR0ZXJfbWV0aG9kX2Zv
cl90eXBlKHBhcmFtZXRlci50eXBlKSwKIApAQCAtMjI2LDE0ICsyNDIsMTQgQEAgY2xhc3MgQ3Bw
QmFja2VuZERpc3BhdGNoZXJJbXBsZW1lbnRhdGlvbkdlbmVyYXRvcihHZW5lcmF0b3IpOgogICAg
ICAgICAgICAgICAgIGlmIHBhcmFtZXRlci5pc19vcHRpb25hbDoKICAgICAgICAgICAgICAgICAg
ICAgaWYgQ3BwR2VuZXJhdG9yLnNob3VsZF91c2Vfd3JhcHBlcl9mb3JfcmV0dXJuX3R5cGUocGFy
YW1ldGVyLnR5cGUpOgogICAgICAgICAgICAgICAgICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3Np
Z25tZW50cy5hcHBlbmQoJyAgICAgICAgaWYgKG91dF8lKHBhcmFtZXRlck5hbWUpcy5pc0Fzc2ln
bmVkKCkpJyAlIHBhcmFtX2FyZ3MpCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXRfcGFyYW1l
dGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgICAgICAgICAgcmVzdWx0LT4lKGtleWVkU2V0TWV0
aG9kKXMoQVNDSUlMaXRlcmFsKCIlKHBhcmFtZXRlck5hbWUpcyIpLCBvdXRfJShwYXJhbWV0ZXJO
YW1lKXMuZ2V0VmFsdWUoKSk7JyAlIHBhcmFtX2FyZ3MpCisgICAgICAgICAgICAgICAgICAgICAg
ICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgICAgICAgICAgcmVzdWx0LT4l
KGtleWVkU2V0TWV0aG9kKXMoQVNDSUlMaXRlcmFsKCIlKHBhcmFtZXRlcktleSlzIiksIG91dF8l
KHBhcmFtZXRlck5hbWUpcy5nZXRWYWx1ZSgpKTsnICUgcGFyYW1fYXJncykKICAgICAgICAgICAg
ICAgICAgICAgZWxzZToKICAgICAgICAgICAgICAgICAgICAgICAgIG91dF9wYXJhbWV0ZXJfYXNz
aWdubWVudHMuYXBwZW5kKCcgICAgICAgIGlmIChvdXRfJShwYXJhbWV0ZXJOYW1lKXMpJyAlIHBh
cmFtX2FyZ3MpCi0gICAgICAgICAgICAgICAgICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1l
bnRzLmFwcGVuZCgnICAgICAgICAgICAgcmVzdWx0LT4lKGtleWVkU2V0TWV0aG9kKXMoQVNDSUlM
aXRlcmFsKCIlKHBhcmFtZXRlck5hbWUpcyIpLCBvdXRfJShwYXJhbWV0ZXJOYW1lKXMpOycgJSBw
YXJhbV9hcmdzKQorICAgICAgICAgICAgICAgICAgICAgICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25t
ZW50cy5hcHBlbmQoJyAgICAgICAgICAgIHJlc3VsdC0+JShrZXllZFNldE1ldGhvZClzKEFTQ0lJ
TGl0ZXJhbCgiJShwYXJhbWV0ZXJLZXkpcyIpLCBvdXRfJShwYXJhbWV0ZXJOYW1lKXMpOycgJSBw
YXJhbV9hcmdzKQogICAgICAgICAgICAgICAgIGVsaWYgcGFyYW1ldGVyLnR5cGUuaXNfZW51bSgp
OgotICAgICAgICAgICAgICAgICAgICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgn
ICAgICAgICByZXN1bHQtPiUoa2V5ZWRTZXRNZXRob2QpcyhBU0NJSUxpdGVyYWwoIiUocGFyYW1l
dGVyTmFtZSlzIiksIEluc3BlY3Rvcjo6UHJvdG9jb2w6OmdldEVudW1Db25zdGFudFZhbHVlKG91
dF8lKHBhcmFtZXRlck5hbWUpcykpOycgJSBwYXJhbV9hcmdzKQorICAgICAgICAgICAgICAgICAg
ICBvdXRfcGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgICAgICByZXN1bHQtPiUoa2V5
ZWRTZXRNZXRob2QpcyhBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVyS2V5KXMiKSwgSW5zcGVjdG9y
OjpQcm90b2NvbDo6Z2V0RW51bUNvbnN0YW50VmFsdWUob3V0XyUocGFyYW1ldGVyTmFtZSlzKSk7
JyAlIHBhcmFtX2FyZ3MpCiAgICAgICAgICAgICAgICAgZWxzZToKLSAgICAgICAgICAgICAgICAg
ICAgb3V0X3BhcmFtZXRlcl9hc3NpZ25tZW50cy5hcHBlbmQoJyAgICAgICAgcmVzdWx0LT4lKGtl
eWVkU2V0TWV0aG9kKXMoQVNDSUlMaXRlcmFsKCIlKHBhcmFtZXRlck5hbWUpcyIpLCBvdXRfJShw
YXJhbWV0ZXJOYW1lKXMpOycgJSBwYXJhbV9hcmdzKQorICAgICAgICAgICAgICAgICAgICBvdXRf
cGFyYW1ldGVyX2Fzc2lnbm1lbnRzLmFwcGVuZCgnICAgICAgICByZXN1bHQtPiUoa2V5ZWRTZXRN
ZXRob2QpcyhBU0NJSUxpdGVyYWwoIiUocGFyYW1ldGVyS2V5KXMiKSwgb3V0XyUocGFyYW1ldGVy
TmFtZSlzKTsnICUgcGFyYW1fYXJncykKIAogICAgICAgICAgICAgICAgIGlmIENwcEdlbmVyYXRv
ci5zaG91bGRfcGFzc19ieV9jb3B5X2Zvcl9yZXR1cm5fdHlwZShwYXJhbWV0ZXIudHlwZSk6CiAg
ICAgICAgICAgICAgICAgICAgIG1ldGhvZF9wYXJhbWV0ZXJzLmFwcGVuZCgnb3V0XycgKyBwYXJh
bWV0ZXIucGFyYW1ldGVyX25hbWUpCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvY29kZWdlbi9nZW5lcmF0ZV9vYmpjX2JhY2tlbmRfZGlzcGF0Y2hl
cl9pbXBsZW1lbnRhdGlvbi5weSBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2Ny
aXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfYmFja2VuZF9kaXNwYXRjaGVyX2ltcGxlbWVudGF0
aW9uLnB5CmluZGV4IDViMzU3OTAuLjI3YmRkNGEgMTAwNzU1Ci0tLSBhL1NvdXJjZS9KYXZhU2Ny
aXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfYmFja2VuZF9k
aXNwYXRjaGVyX2ltcGxlbWVudGF0aW9uLnB5CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9p
bnNwZWN0b3Ivc2NyaXB0cy9jb2RlZ2VuL2dlbmVyYXRlX29iamNfYmFja2VuZF9kaXNwYXRjaGVy
X2ltcGxlbWVudGF0aW9uLnB5CkBAIC0xNTgsOCArMTU4LDEwIEBAIGNsYXNzIE9iakNDb25maWd1
cmF0aW9uSW1wbGVtZW50YXRpb25HZW5lcmF0b3IoR2VuZXJhdG9yKToKICAgICAgICAgICAgIGlm
IGlzaW5zdGFuY2UoX3R5cGUsIEVudW1UeXBlKToKICAgICAgICAgICAgICAgICBfdHlwZSA9IF90
eXBlLnByaW1pdGl2ZV90eXBlICAjIEZhbGwgdGhyb3VnaCB0byBwcmltaXRpdmUuCiAgICAgICAg
ICAgICBpZiBpc2luc3RhbmNlKF90eXBlLCBQcmltaXRpdmVUeXBlKToKKyAgICAgICAgICAgICAg
ICBpZiBfdHlwZS5yYXdfbmFtZSgpIGluIFsnYXJyYXknLCAnYW55JywgJ29iamVjdCddOgorICAg
ICAgICAgICAgICAgICAgICByZXR1cm4gJyYlcycgJSBwYXJhbV9uYW1lIGlmIG5vdCBwYXJhbWV0
ZXIuaXNfb3B0aW9uYWwgZWxzZSBwYXJhbV9uYW1lCiAgICAgICAgICAgICAgICAgcmV0dXJuICcq
JXMnICUgcGFyYW1fbmFtZSBpZiBwYXJhbWV0ZXIuaXNfb3B0aW9uYWwgZWxzZSBwYXJhbV9uYW1l
Ci0gICAgICAgICAgICByZXR1cm4gJyVzLmNvcHlSZWYoKScgJSBwYXJhbV9uYW1lCisgICAgICAg
ICAgICByZXR1cm4gJyYlcycgJSBwYXJhbV9uYW1lIGlmIG5vdCBwYXJhbWV0ZXIuaXNfb3B0aW9u
YWwgZWxzZSBwYXJhbV9uYW1lCiAKICAgICAgICAgZm9yIHBhcmFtZXRlciBpbiBjb21tYW5kLmNh
bGxfcGFyYW1ldGVyczoKICAgICAgICAgICAgIGluX3BhcmFtX25hbWUgPSAnaW5fJXMnICUgcGFy
YW1ldGVyLnBhcmFtZXRlcl9uYW1lCmRpZmYgLS1naXQgYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUv
aW5zcGVjdG9yL3NjcmlwdHMvdGVzdHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1j
YWxsLXJldHVybi1wYXJhbWV0ZXJzLmpzb24tcmVzdWx0IGIvU291cmNlL0phdmFTY3JpcHRDb3Jl
L2luc3BlY3Rvci9zY3JpcHRzL3Rlc3RzL2V4cGVjdGVkL2NvbW1hbmRzLXdpdGgtb3B0aW9uYWwt
Y2FsbC1yZXR1cm4tcGFyYW1ldGVycy5qc29uLXJlc3VsdAppbmRleCA5MDA0NTY1Li5lMzQ5ZWNm
IDEwMDY0NAotLS0gYS9Tb3VyY2UvSmF2YVNjcmlwdENvcmUvaW5zcGVjdG9yL3NjcmlwdHMvdGVz
dHMvZXhwZWN0ZWQvY29tbWFuZHMtd2l0aC1vcHRpb25hbC1jYWxsLXJldHVybi1wYXJhbWV0ZXJz
Lmpzb24tcmVzdWx0CisrKyBiL1NvdXJjZS9KYXZhU2NyaXB0Q29yZS9pbnNwZWN0b3Ivc2NyaXB0
cy90ZXN0cy9leHBlY3RlZC9jb21tYW5kcy13aXRoLW9wdGlvbmFsLWNhbGwtcmV0dXJuLXBhcmFt
ZXRlcnMuanNvbi1yZXN1bHQKQEAgLTUxLDggKzUxLDggQEAgcHJpdmF0ZToKIGNsYXNzIEFsdGVy
bmF0ZURhdGFiYXNlQmFja2VuZERpc3BhdGNoZXIgOiBwdWJsaWMgQWx0ZXJuYXRlQmFja2VuZERp
c3BhdGNoZXIgewogcHVibGljOgogICAgIHZpcnR1YWwgfkFsdGVybmF0ZURhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXIoKSB7IH0KLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFy
YW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJy
YXk+JiYgaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogaW5fbm90ZXMsIGNvbnN0IGRvdWJs
ZSogaW5fdGltZXN0YW1wLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
JiYgaW5fdmFsdWVzLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlKiBpbl9wYXlsb2Fk
LCBjb25zdCBpbnQqIGluX2RhdGFiYXNlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdD4mJiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nKiBpbl9zY3JlZW5Db2xvciwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5fYWx0ZXJuYXRlQ29s
b3JzLCBjb25zdCBTdHJpbmcqIGluX3ByaW50Q29sb3IpID0gMDsKLSAgICB2aXJ0dWFsIHZvaWQg
ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBSZWZQdHI8SW5z
cGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mJiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBp
bl9ub3RlcywgZG91YmxlIGluX3RpbWVzdGFtcCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5z
cGVjdG9yT2JqZWN0PiYmIGluX3ZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSBpbl9w
YXlsb2FkLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0PiYmIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcmIGluX3NjcmVlbkNvbG9yLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mJiBpbl9hbHRlcm5hdGVDb2xv
cnMsIGNvbnN0IFN0cmluZyYgaW5fcHJpbnRDb2xvcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBl
eGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3I6
Okluc3BlY3RvckFycmF5KiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBpbl9ub3Rlcywg
Y29uc3QgZG91YmxlKiBpbl90aW1lc3RhbXAsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0KiBpbl92YWx1ZXMsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIGluX3BheWxv
YWQsIGNvbnN0IGludCogaW5fZGF0YWJhc2VJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3QqIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcqIGluX3NjcmVlbkNvbG9yLCBjb25zdCBJ
bnNwZWN0b3I6Okluc3BlY3RvckFycmF5KiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmlu
ZyogaW5fcHJpbnRDb2xvcikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlTm9PcHRpb25h
bFBhcmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkm
IGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcmIGluX25vdGVzLCBkb3VibGUgaW5fdGltZXN0
YW1wLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgaW5fdmFsdWVzLCBJbnNwZWN0
b3I6Okluc3BlY3RvclZhbHVlIGluX3BheWxvYWQsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgaW5f
c2NyZWVuQ29sb3IsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkmIGluX2FsdGVybmF0
ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBpbl9wcmludENvbG9yKSA9IDA7CiB9OwogCiB9IC8vIG5h
bWVzcGFjZSBJbnNwZWN0b3IKQEAgLTE2MSw4ICsxNjEsOCBAQCBwdWJsaWM6CiAgICAgICAgIFll
bGxvdyA9IDUsCiAgICAgICAgIEJsYWNrID0gNiwKICAgICB9OyAvLyBlbnVtIGNsYXNzIFByaW50
Q29sb3IKLSAgICB2aXJ0dWFsIHZvaWQgZXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyhFcnJv
clN0cmluZyYsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2Nv
bHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGluX25vdGVzLCBjb25zdCBkb3VibGUqIGluX3RpbWVz
dGFtcCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGluX3ZhbHVl
cywgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogaW5fcGF5bG9hZCwgY29uc3QgaW50
KiBpbl9kYXRhYmFzZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+
JiYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyogaW5fc2NyZWVuQ29sb3IsIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3Qg
U3RyaW5nKiBpbl9wcmludENvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8
U3RyaW5nPj4mIG9wdF9vdXRfY29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91
dHB1dDxTdHJpbmc+KiBvcHRfb3V0X25vdGVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRw
dXQ8ZG91YmxlPiogb3B0X291dF90aW1lc3RhbXAsIEluc3BlY3Rvcjo6UHJvdG9jb2w6Ok9wdE91
dHB1dDxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG9wdF9vdXRfdmFsdWVzLCBJbnNwZWN0
b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4qIG9wdF9v
dXRfcGF5bG9hZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIG9wdF9vdXRf
ZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpFcnJvcj4m
IG9wdF9vdXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5
Q29sb3JzKiBvcHRfb3V0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG9wdF9vdXRfYWx0ZXJuYXRlQ29sb3JzLCBEYXRhYmFzZUJh
Y2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciogb3B0X291dF9wcmludENvbG9yKSA9
IDA7Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhFcnJvclN0
cmluZyYsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2NvbHVt
bk5hbWVzLCBjb25zdCBTdHJpbmcmIGluX25vdGVzLCBkb3VibGUgaW5fdGltZXN0YW1wLCBjb25z
dCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fdmFsdWVzLCBJbnNwZWN0
b3I6Okluc3BlY3RvclZhbHVlIGluX3BheWxvYWQsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0
cmluZyYgaW5fc2NyZWVuQ29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFy
cmF5PiYmIGluX2FsdGVybmF0ZUNvbG9ycywgY29uc3QgU3RyaW5nJiBpbl9wcmludENvbG9yLCBS
ZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4mIG91dF9jb2x1bW5OYW1l
cywgU3RyaW5nKiBvdXRfbm90ZXMsIGRvdWJsZSogb3V0X3RpbWVzdGFtcCwgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3QqIG91dF92YWx1ZXMsIEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIG91
dF9wYXlsb2FkLCBpbnQqIG91dF9kYXRhYmFzZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6RGF0YWJhc2U6OkVycm9yPiYgb3V0X3NxbEVycm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpE
YXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3V0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9y
OjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG91dF9hbHRlcm5hdGVDb2xvcnMsIERh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyOjpQcmludENvbG9yKiBvdXRfcHJpbnRDb2xv
cikgPSAwOworICAgIHZpcnR1YWwgdm9pZCBleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKEVy
cm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSogb3B0X2luX2NvbHVt
bk5hbWVzLCBjb25zdCBTdHJpbmcqIG9wdF9pbl9ub3RlcywgY29uc3QgZG91YmxlKiBvcHRfaW5f
dGltZXN0YW1wLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogb3B0X2luX3ZhbHVl
cywgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogb3B0X2luX3BheWxvYWQsIGNvbnN0
IGludCogb3B0X2luX2RhdGFiYXNlSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
KiBvcHRfaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyogb3B0X2luX3NjcmVlbkNvbG9yLCBjb25z
dCBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5KiBvcHRfaW5fYWx0ZXJuYXRlQ29sb3JzLCBjb25z
dCBTdHJpbmcqIG9wdF9pbl9wcmludENvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6
QXJyYXk8U3RyaW5nPj4mIG9wdF9vdXRfY29sdW1uTmFtZXMsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok9wdE91dHB1dDxTdHJpbmc+KiBvcHRfb3V0X25vdGVzLCBJbnNwZWN0b3I6OlByb3RvY29sOjpP
cHRPdXRwdXQ8ZG91YmxlPiogb3B0X291dF90aW1lc3RhbXAsIEluc3BlY3Rvcjo6UHJvdG9jb2w6
Ok9wdE91dHB1dDxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4qIG9wdF9vdXRfdmFsdWVzLCBJ
bnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8SW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZT4q
IG9wdF9vdXRfcGF5bG9hZCwgSW5zcGVjdG9yOjpQcm90b2NvbDo6T3B0T3V0cHV0PGludD4qIG9w
dF9vdXRfZGF0YWJhc2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpF
cnJvcj4mIG9wdF9vdXRfc3FsRXJyb3IsIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQ
cmltYXJ5Q29sb3JzKiBvcHRfb3V0X3NjcmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90
b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlzdD4mIG9wdF9vdXRfYWx0ZXJuYXRlQ29sb3JzLCBEYXRh
YmFzZUJhY2tlbmREaXNwYXRjaGVySGFuZGxlcjo6UHJpbnRDb2xvciogb3B0X291dF9wcmludENv
bG9yKSA9IDA7CisgICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhF
cnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkmIGluX2NvbHVtbk5h
bWVzLCBjb25zdCBTdHJpbmcmIGluX25vdGVzLCBkb3VibGUgaW5fdGltZXN0YW1wLCBjb25zdCBJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgaW5fdmFsdWVzLCBJbnNwZWN0b3I6Okluc3BlY3Rv
clZhbHVlIGluX3BheWxvYWQsIGludCBpbl9kYXRhYmFzZUlkLCBjb25zdCBJbnNwZWN0b3I6Oklu
c3BlY3Rvck9iamVjdCYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyYgaW5fc2NyZWVuQ29sb3Is
IGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkmIGluX2FsdGVybmF0ZUNvbG9ycywgY29u
c3QgU3RyaW5nJiBpbl9wcmludENvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJy
YXk8U3RyaW5nPj4mIG91dF9jb2x1bW5OYW1lcywgU3RyaW5nKiBvdXRfbm90ZXMsIGRvdWJsZSog
b3V0X3RpbWVzdGFtcCwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG91dF92YWx1ZXMsIElu
c3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIG91dF9wYXlsb2FkLCBpbnQqIG91dF9kYXRhYmFzZUlk
LCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkVycm9yPiYgb3V0X3NxbEVy
cm9yLCBJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6UHJpbWFyeUNvbG9ycyogb3V0X3Nj
cmVlbkNvbG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9yTGlz
dD4mIG91dF9hbHRlcm5hdGVDb2xvcnMsIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVy
OjpQcmludENvbG9yKiBvdXRfcHJpbnRDb2xvcikgPSAwOwogcHJvdGVjdGVkOgogICAgIHZpcnR1
YWwgfkRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5kbGVyKCk7CiB9OwpAQCAtMjY4LDI2ICsy
NjgsMjYgQEAgdm9pZCBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9u
YWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdAogICAgIGF1dG8gcHJvdG9jb2xFcnJvcnMg
PSBJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+OjpjcmVhdGUoKTsKICAgICBSZWZQ
dHI8SW5zcGVjdG9yT2JqZWN0PiBwYXJhbXNDb250YWluZXI7CiAgICAgbWVzc2FnZS5nZXRPYmpl
Y3QoQVNDSUlMaXRlcmFsKCJwYXJhbXMiKSwgcGFyYW1zQ29udGFpbmVyKTsKLSAgICBib29sIGNv
bHVtbk5hbWVzX3ZhbHVlRm91bmQgPSBmYWxzZTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JBcnJheT4gaW5fY29sdW1uTmFtZXMgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXko
cGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksICZjb2x1
bW5OYW1lc192YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7Ci0gICAgYm9vbCBub3Rl
c192YWx1ZUZvdW5kID0gZmFsc2U7Ci0gICAgU3RyaW5nIGluX25vdGVzID0gQmFja2VuZERpc3Bh
dGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgibm90
ZXMiKSwgJm5vdGVzX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLmdldCgpKTsKLSAgICBib29s
IHRpbWVzdGFtcF92YWx1ZUZvdW5kID0gZmFsc2U7Ci0gICAgSW5zcGVjdG9yOjpQcm90b2NvbDo6
T3B0T3V0cHV0PGRvdWJsZT4gaW5fdGltZXN0YW1wID0gQmFja2VuZERpc3BhdGNoZXI6OmdldERv
dWJsZShwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksICZ0
aW1lc3RhbXBfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwotICAgIGJvb2wgdmFs
dWVzX3ZhbHVlRm91bmQgPSBmYWxzZTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JP
YmplY3Q+IGluX3ZhbHVlcyA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRPYmplY3QocGFyYW1zQ29u
dGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCAmdmFsdWVzX3ZhbHVlRm91bmQs
IHByb3RvY29sRXJyb3JzLmdldCgpKTsKLSAgICBib29sIHBheWxvYWRfdmFsdWVGb3VuZCA9IGZh
bHNlOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVlPiBpbl9wYXlsb2FkID0g
QmFja2VuZERpc3BhdGNoZXI6OmdldFZhbHVlKHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlM
aXRlcmFsKCJwYXlsb2FkIiksICZwYXlsb2FkX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLmdl
dCgpKTsKLSAgICBib29sIGRhdGFiYXNlSWRfdmFsdWVGb3VuZCA9IGZhbHNlOwotICAgIGludCBp
bl9kYXRhYmFzZUlkID0gQmFja2VuZERpc3BhdGNoZXI6OmdldEludGVnZXIocGFyYW1zQ29udGFp
bmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImRhdGFiYXNlSWQiKSwgJmRhdGFiYXNlSWRfdmFsdWVG
b3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOwotICAgIGJvb2wgc3FsRXJyb3JfdmFsdWVGb3Vu
ZCA9IGZhbHNlOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gaW5fc3Fs
RXJyb3IgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0T2JqZWN0KHBhcmFtc0NvbnRhaW5lci5nZXQo
KSwgQVNDSUlMaXRlcmFsKCJzcWxFcnJvciIpLCAmc3FsRXJyb3JfdmFsdWVGb3VuZCwgcHJvdG9j
b2xFcnJvcnMuZ2V0KCkpOwotICAgIGJvb2wgc2NyZWVuQ29sb3JfdmFsdWVGb3VuZCA9IGZhbHNl
OwotICAgIFN0cmluZyBpbl9zY3JlZW5Db2xvciA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRTdHJp
bmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9yIiksICZz
Y3JlZW5Db2xvcl92YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7Ci0gICAgYm9vbCBh
bHRlcm5hdGVDb2xvcnNfdmFsdWVGb3VuZCA9IGZhbHNlOwotICAgIFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3RvckFycmF5PiBpbl9hbHRlcm5hdGVDb2xvcnMgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6
Z2V0QXJyYXkocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImFsdGVybmF0ZUNv
bG9ycyIpLCAmYWx0ZXJuYXRlQ29sb3JzX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLmdldCgp
KTsKLSAgICBib29sIHByaW50Q29sb3JfdmFsdWVGb3VuZCA9IGZhbHNlOwotICAgIFN0cmluZyBp
bl9wcmludENvbG9yID0gQmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWlu
ZXIuZ2V0KCksIEFTQ0lJTGl0ZXJhbCgicHJpbnRDb2xvciIpLCAmcHJpbnRDb2xvcl92YWx1ZUZv
dW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgYm9vbCBvcHRfaW5fY29sdW1uTmFtZXNf
dmFsdWVGb3VuZCA9IGZhbHNlOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5
PiBvcHRfaW5fY29sdW1uTmFtZXMgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXkocGFyYW1z
Q29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImNvbHVtbk5hbWVzIiksICZvcHRfaW5fY29s
dW1uTmFtZXNfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkpOworICAgIGJvb2wgb3B0
X2luX25vdGVzX3ZhbHVlRm91bmQgPSBmYWxzZTsKKyAgICBTdHJpbmcgb3B0X2luX25vdGVzID0g
QmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJ
TGl0ZXJhbCgibm90ZXMiKSwgJm9wdF9pbl9ub3Rlc192YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9y
cy5nZXQoKSk7CisgICAgYm9vbCBvcHRfaW5fdGltZXN0YW1wX3ZhbHVlRm91bmQgPSBmYWxzZTsK
KyAgICBJbnNwZWN0b3I6OlByb3RvY29sOjpPcHRPdXRwdXQ8ZG91YmxlPiBvcHRfaW5fdGltZXN0
YW1wID0gQmFja2VuZERpc3BhdGNoZXI6OmdldERvdWJsZShwYXJhbXNDb250YWluZXIuZ2V0KCks
IEFTQ0lJTGl0ZXJhbCgidGltZXN0YW1wIiksICZvcHRfaW5fdGltZXN0YW1wX3ZhbHVlRm91bmQs
IHByb3RvY29sRXJyb3JzLmdldCgpKTsKKyAgICBib29sIG9wdF9pbl92YWx1ZXNfdmFsdWVGb3Vu
ZCA9IGZhbHNlOworICAgIFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4gb3B0X2lu
X3ZhbHVlcyA9IEJhY2tlbmREaXNwYXRjaGVyOjpnZXRPYmplY3QocGFyYW1zQ29udGFpbmVyLmdl
dCgpLCBBU0NJSUxpdGVyYWwoInZhbHVlcyIpLCAmb3B0X2luX3ZhbHVlc192YWx1ZUZvdW5kLCBw
cm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgYm9vbCBvcHRfaW5fcGF5bG9hZF92YWx1ZUZvdW5k
ID0gZmFsc2U7CisgICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWU+IG9wdF9pbl9w
YXlsb2FkID0gQmFja2VuZERpc3BhdGNoZXI6OmdldFZhbHVlKHBhcmFtc0NvbnRhaW5lci5nZXQo
KSwgQVNDSUlMaXRlcmFsKCJwYXlsb2FkIiksICZvcHRfaW5fcGF5bG9hZF92YWx1ZUZvdW5kLCBw
cm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgYm9vbCBvcHRfaW5fZGF0YWJhc2VJZF92YWx1ZUZv
dW5kID0gZmFsc2U7CisgICAgaW50IG9wdF9pbl9kYXRhYmFzZUlkID0gQmFja2VuZERpc3BhdGNo
ZXI6OmdldEludGVnZXIocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoImRhdGFi
YXNlSWQiKSwgJm9wdF9pbl9kYXRhYmFzZUlkX3ZhbHVlRm91bmQsIHByb3RvY29sRXJyb3JzLmdl
dCgpKTsKKyAgICBib29sIG9wdF9pbl9zcWxFcnJvcl92YWx1ZUZvdW5kID0gZmFsc2U7CisgICAg
UmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiBvcHRfaW5fc3FsRXJyb3IgPSBCYWNr
ZW5kRGlzcGF0Y2hlcjo6Z2V0T2JqZWN0KHBhcmFtc0NvbnRhaW5lci5nZXQoKSwgQVNDSUlMaXRl
cmFsKCJzcWxFcnJvciIpLCAmb3B0X2luX3NxbEVycm9yX3ZhbHVlRm91bmQsIHByb3RvY29sRXJy
b3JzLmdldCgpKTsKKyAgICBib29sIG9wdF9pbl9zY3JlZW5Db2xvcl92YWx1ZUZvdW5kID0gZmFs
c2U7CisgICAgU3RyaW5nIG9wdF9pbl9zY3JlZW5Db2xvciA9IEJhY2tlbmREaXNwYXRjaGVyOjpn
ZXRTdHJpbmcocGFyYW1zQ29udGFpbmVyLmdldCgpLCBBU0NJSUxpdGVyYWwoInNjcmVlbkNvbG9y
IiksICZvcHRfaW5fc2NyZWVuQ29sb3JfdmFsdWVGb3VuZCwgcHJvdG9jb2xFcnJvcnMuZ2V0KCkp
OworICAgIGJvb2wgb3B0X2luX2FsdGVybmF0ZUNvbG9yc192YWx1ZUZvdW5kID0gZmFsc2U7Cisg
ICAgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+IG9wdF9pbl9hbHRlcm5hdGVDb2xv
cnMgPSBCYWNrZW5kRGlzcGF0Y2hlcjo6Z2V0QXJyYXkocGFyYW1zQ29udGFpbmVyLmdldCgpLCBB
U0NJSUxpdGVyYWwoImFsdGVybmF0ZUNvbG9ycyIpLCAmb3B0X2luX2FsdGVybmF0ZUNvbG9yc192
YWx1ZUZvdW5kLCBwcm90b2NvbEVycm9ycy5nZXQoKSk7CisgICAgYm9vbCBvcHRfaW5fcHJpbnRD
b2xvcl92YWx1ZUZvdW5kID0gZmFsc2U7CisgICAgU3RyaW5nIG9wdF9pbl9wcmludENvbG9yID0g
QmFja2VuZERpc3BhdGNoZXI6OmdldFN0cmluZyhwYXJhbXNDb250YWluZXIuZ2V0KCksIEFTQ0lJ
TGl0ZXJhbCgicHJpbnRDb2xvciIpLCAmb3B0X2luX3ByaW50Q29sb3JfdmFsdWVGb3VuZCwgcHJv
dG9jb2xFcnJvcnMuZ2V0KCkpOwogICAgIGlmIChwcm90b2NvbEVycm9ycy0+bGVuZ3RoKCkpIHsK
ICAgICAgICAgU3RyaW5nIGVycm9yTWVzc2FnZSA9IFN0cmluZzo6Zm9ybWF0KCJTb21lIGFyZ3Vt
ZW50cyBvZiBtZXRob2QgJyVzJyBjYW4ndCBiZSBwcm9jZXNzZWQiLCAiRGF0YWJhc2UuZXhlY3V0
ZUFsbE9wdGlvbmFsUGFyYW1ldGVycyIpOwogICAgICAgICBtX2JhY2tlbmREaXNwYXRjaGVyLT5y
ZXBvcnRQcm90b2NvbEVycm9yKCZjYWxsSWQsIEJhY2tlbmREaXNwYXRjaGVyOjpJbnZhbGlkUGFy
YW1zLCBlcnJvck1lc3NhZ2UsIFdURjo6bW92ZShwcm90b2NvbEVycm9ycykpOwpAQCAtMjk2LDcg
KzI5Niw3IEBAIHZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFsbE9wdGlv
bmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QKIAogI2lmIEVOQUJMRShJTlNQRUNUT1Jf
QUxURVJOQVRFX0RJU1BBVENIRVJTKQogICAgIGlmIChtX2FsdGVybmF0ZURpc3BhdGNoZXIpIHsK
LSAgICAgICAgbV9hbHRlcm5hdGVEaXNwYXRjaGVyLT5leGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0
ZXJzKGNhbGxJZCwgY29sdW1uTmFtZXNfdmFsdWVGb3VuZCA/IGluX2NvbHVtbk5hbWVzLmNvcHlS
ZWYoKSA6IG51bGxwdHIsIG5vdGVzX3ZhbHVlRm91bmQgPyAmaW5fbm90ZXMgOiBudWxscHRyLCB0
aW1lc3RhbXBfdmFsdWVGb3VuZCA/ICZpbl90aW1lc3RhbXAgOiBudWxscHRyLCB2YWx1ZXNfdmFs
dWVGb3VuZCA/IGluX3ZhbHVlcy5jb3B5UmVmKCkgOiBudWxscHRyLCBwYXlsb2FkX3ZhbHVlRm91
bmQgPyBpbl9wYXlsb2FkLmNvcHlSZWYoKSA6IG51bGxwdHIsIGRhdGFiYXNlSWRfdmFsdWVGb3Vu
ZCA/ICZpbl9kYXRhYmFzZUlkIDogbnVsbHB0ciwgc3FsRXJyb3JfdmFsdWVGb3VuZCA/IGluX3Nx
bEVycm9yLmNvcHlSZWYoKSA6IG51bGxwdHIsIHNjcmVlbkNvbG9yX3ZhbHVlRm91bmQgPyAmaW5f
c2NyZWVuQ29sb3IgOiBudWxscHRyLCBhbHRlcm5hdGVDb2xvcnNfdmFsdWVGb3VuZCA/IGluX2Fs
dGVybmF0ZUNvbG9ycy5jb3B5UmVmKCkgOiBudWxscHRyLCBwcmludENvbG9yX3ZhbHVlRm91bmQg
PyAmaW5fcHJpbnRDb2xvciA6IG51bGxwdHIpOworICAgICAgICBtX2FsdGVybmF0ZURpc3BhdGNo
ZXItPmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMoY2FsbElkLCBvcHRfaW5fY29sdW1uTmFt
ZXNfdmFsdWVGb3VuZCA/IG9wdF9pbl9jb2x1bW5OYW1lcy5nZXQoKSA6IG51bGxwdHIsIG9wdF9p
bl9ub3Rlc192YWx1ZUZvdW5kID8gJm9wdF9pbl9ub3RlcyA6IG51bGxwdHIsIG9wdF9pbl90aW1l
c3RhbXBfdmFsdWVGb3VuZCA/ICZvcHRfaW5fdGltZXN0YW1wIDogbnVsbHB0ciwgb3B0X2luX3Zh
bHVlc192YWx1ZUZvdW5kID8gb3B0X2luX3ZhbHVlcy5nZXQoKSA6IG51bGxwdHIsIG9wdF9pbl9w
YXlsb2FkX3ZhbHVlRm91bmQgPyBvcHRfaW5fcGF5bG9hZC5nZXQoKSA6IG51bGxwdHIsIG9wdF9p
bl9kYXRhYmFzZUlkX3ZhbHVlRm91bmQgPyAmb3B0X2luX2RhdGFiYXNlSWQgOiBudWxscHRyLCBv
cHRfaW5fc3FsRXJyb3JfdmFsdWVGb3VuZCA/IG9wdF9pbl9zcWxFcnJvci5nZXQoKSA6IG51bGxw
dHIsIG9wdF9pbl9zY3JlZW5Db2xvcl92YWx1ZUZvdW5kID8gJm9wdF9pbl9zY3JlZW5Db2xvciA6
IG51bGxwdHIsIG9wdF9pbl9hbHRlcm5hdGVDb2xvcnNfdmFsdWVGb3VuZCA/IG9wdF9pbl9hbHRl
cm5hdGVDb2xvcnMuZ2V0KCkgOiBudWxscHRyLCBvcHRfaW5fcHJpbnRDb2xvcl92YWx1ZUZvdW5k
ID8gJm9wdF9pbl9wcmludENvbG9yIDogbnVsbHB0cik7CiAgICAgICAgIHJldHVybjsKICAgICB9
CiAjZW5kaWYKQEAgLTMxMyw3ICszMTMsNyBAQCB2b2lkIERhdGFiYXNlQmFja2VuZERpc3BhdGNo
ZXI6OmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0CiAgICAg
SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OlByaW1hcnlDb2xvcnMgb3V0X3NjcmVlbkNv
bG9yOwogICAgIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpEYXRhYmFzZTo6Q29sb3JMaXN0
PiBvdXRfYWx0ZXJuYXRlQ29sb3JzOwogICAgIERhdGFiYXNlQmFja2VuZERpc3BhdGNoZXJIYW5k
bGVyOjpQcmludENvbG9yIG91dF9wcmludENvbG9yOwotICAgIG1fYWdlbnQtPmV4ZWN1dGVBbGxP
cHRpb25hbFBhcmFtZXRlcnMoZXJyb3IsIGNvbHVtbk5hbWVzX3ZhbHVlRm91bmQgPyBpbl9jb2x1
bW5OYW1lcy5jb3B5UmVmKCkgOiBudWxscHRyLCBub3Rlc192YWx1ZUZvdW5kID8gJmluX25vdGVz
IDogbnVsbHB0ciwgdGltZXN0YW1wX3ZhbHVlRm91bmQgPyAmaW5fdGltZXN0YW1wIDogbnVsbHB0
ciwgdmFsdWVzX3ZhbHVlRm91bmQgPyBpbl92YWx1ZXMuY29weVJlZigpIDogbnVsbHB0ciwgcGF5
bG9hZF92YWx1ZUZvdW5kID8gaW5fcGF5bG9hZC5jb3B5UmVmKCkgOiBudWxscHRyLCBkYXRhYmFz
ZUlkX3ZhbHVlRm91bmQgPyAmaW5fZGF0YWJhc2VJZCA6IG51bGxwdHIsIHNxbEVycm9yX3ZhbHVl
Rm91bmQgPyBpbl9zcWxFcnJvci5jb3B5UmVmKCkgOiBudWxscHRyLCBzY3JlZW5Db2xvcl92YWx1
ZUZvdW5kID8gJmluX3NjcmVlbkNvbG9yIDogbnVsbHB0ciwgYWx0ZXJuYXRlQ29sb3JzX3ZhbHVl
Rm91bmQgPyBpbl9hbHRlcm5hdGVDb2xvcnMuY29weVJlZigpIDogbnVsbHB0ciwgcHJpbnRDb2xv
cl92YWx1ZUZvdW5kID8gJmluX3ByaW50Q29sb3IgOiBudWxscHRyLCBvdXRfY29sdW1uTmFtZXMs
ICZvdXRfbm90ZXMsICZvdXRfdGltZXN0YW1wLCBvdXRfdmFsdWVzLCAmb3V0X3BheWxvYWQsICZv
dXRfZGF0YWJhc2VJZCwgb3V0X3NxbEVycm9yLCAmb3V0X3NjcmVlbkNvbG9yLCBvdXRfYWx0ZXJu
YXRlQ29sb3JzLCAmb3V0X3ByaW50Q29sb3IpOworICAgIG1fYWdlbnQtPmV4ZWN1dGVBbGxPcHRp
b25hbFBhcmFtZXRlcnMoZXJyb3IsIG9wdF9pbl9jb2x1bW5OYW1lc192YWx1ZUZvdW5kID8gb3B0
X2luX2NvbHVtbk5hbWVzLmdldCgpIDogbnVsbHB0ciwgb3B0X2luX25vdGVzX3ZhbHVlRm91bmQg
PyAmb3B0X2luX25vdGVzIDogbnVsbHB0ciwgb3B0X2luX3RpbWVzdGFtcF92YWx1ZUZvdW5kID8g
Jm9wdF9pbl90aW1lc3RhbXAgOiBudWxscHRyLCBvcHRfaW5fdmFsdWVzX3ZhbHVlRm91bmQgPyBv
cHRfaW5fdmFsdWVzLmdldCgpIDogbnVsbHB0ciwgb3B0X2luX3BheWxvYWRfdmFsdWVGb3VuZCA/
IG9wdF9pbl9wYXlsb2FkLmdldCgpIDogbnVsbHB0ciwgb3B0X2luX2RhdGFiYXNlSWRfdmFsdWVG
b3VuZCA/ICZvcHRfaW5fZGF0YWJhc2VJZCA6IG51bGxwdHIsIG9wdF9pbl9zcWxFcnJvcl92YWx1
ZUZvdW5kID8gb3B0X2luX3NxbEVycm9yLmdldCgpIDogbnVsbHB0ciwgb3B0X2luX3NjcmVlbkNv
bG9yX3ZhbHVlRm91bmQgPyAmb3B0X2luX3NjcmVlbkNvbG9yIDogbnVsbHB0ciwgb3B0X2luX2Fs
dGVybmF0ZUNvbG9yc192YWx1ZUZvdW5kID8gb3B0X2luX2FsdGVybmF0ZUNvbG9ycy5nZXQoKSA6
IG51bGxwdHIsIG9wdF9pbl9wcmludENvbG9yX3ZhbHVlRm91bmQgPyAmb3B0X2luX3ByaW50Q29s
b3IgOiBudWxscHRyLCBvdXRfY29sdW1uTmFtZXMsICZvdXRfbm90ZXMsICZvdXRfdGltZXN0YW1w
LCBvdXRfdmFsdWVzLCAmb3V0X3BheWxvYWQsICZvdXRfZGF0YWJhc2VJZCwgb3V0X3NxbEVycm9y
LCAmb3V0X3NjcmVlbkNvbG9yLCBvdXRfYWx0ZXJuYXRlQ29sb3JzLCAmb3V0X3ByaW50Q29sb3Ip
OwogCiAgICAgaWYgKCFlcnJvci5sZW5ndGgoKSkgewogICAgICAgICBpZiAob3V0X2NvbHVtbk5h
bWVzKQpAQCAtMzYzLDcgKzM2Myw3IEBAIHZvaWQgRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6
ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBJCiAKICNpZiBF
TkFCTEUoSU5TUEVDVE9SX0FMVEVSTkFURV9ESVNQQVRDSEVSUykKICAgICBpZiAobV9hbHRlcm5h
dGVEaXNwYXRjaGVyKSB7Ci0gICAgICAgIG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci0+ZXhlY3V0ZU5v
T3B0aW9uYWxQYXJhbWV0ZXJzKGNhbGxJZCwgaW5fY29sdW1uTmFtZXMuY29weVJlZigpLCBpbl9u
b3RlcywgaW5fdGltZXN0YW1wLCBpbl92YWx1ZXMuY29weVJlZigpLCBpbl9wYXlsb2FkLmNvcHlS
ZWYoKSwgaW5fZGF0YWJhc2VJZCwgaW5fc3FsRXJyb3IuY29weVJlZigpLCBpbl9zY3JlZW5Db2xv
ciwgaW5fYWx0ZXJuYXRlQ29sb3JzLmNvcHlSZWYoKSwgaW5fcHJpbnRDb2xvcik7CisgICAgICAg
IG1fYWx0ZXJuYXRlRGlzcGF0Y2hlci0+ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGNhbGxJ
ZCwgKmluX2NvbHVtbk5hbWVzLCBpbl9ub3RlcywgaW5fdGltZXN0YW1wLCAqaW5fdmFsdWVzLCAq
aW5fcGF5bG9hZCwgaW5fZGF0YWJhc2VJZCwgKmluX3NxbEVycm9yLCBpbl9zY3JlZW5Db2xvciwg
KmluX2FsdGVybmF0ZUNvbG9ycywgaW5fcHJpbnRDb2xvcik7CiAgICAgICAgIHJldHVybjsKICAg
ICB9CiAjZW5kaWYKQEAgLTM4MCw3ICszODAsNyBAQCB2b2lkIERhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXI6OmV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgSQog
ICAgIEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRhdGFiYXNlOjpQcmltYXJ5Q29sb3JzIG91dF9zY3Jl
ZW5Db2xvcjsKICAgICBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6RGF0YWJhc2U6OkNvbG9y
TGlzdD4gb3V0X2FsdGVybmF0ZUNvbG9yczsKICAgICBEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVy
SGFuZGxlcjo6UHJpbnRDb2xvciBvdXRfcHJpbnRDb2xvcjsKLSAgICBtX2FnZW50LT5leGVjdXRl
Tm9PcHRpb25hbFBhcmFtZXRlcnMoZXJyb3IsIGluX2NvbHVtbk5hbWVzLmNvcHlSZWYoKSwgaW5f
bm90ZXMsIGluX3RpbWVzdGFtcCwgaW5fdmFsdWVzLmNvcHlSZWYoKSwgaW5fcGF5bG9hZC5jb3B5
UmVmKCksIGluX2RhdGFiYXNlSWQsIGluX3NxbEVycm9yLmNvcHlSZWYoKSwgaW5fc2NyZWVuQ29s
b3IsIGluX2FsdGVybmF0ZUNvbG9ycy5jb3B5UmVmKCksIGluX3ByaW50Q29sb3IsIG91dF9jb2x1
bW5OYW1lcywgJm91dF9ub3RlcywgJm91dF90aW1lc3RhbXAsIG91dF92YWx1ZXMsICZvdXRfcGF5
bG9hZCwgJm91dF9kYXRhYmFzZUlkLCBvdXRfc3FsRXJyb3IsICZvdXRfc2NyZWVuQ29sb3IsIG91
dF9hbHRlcm5hdGVDb2xvcnMsICZvdXRfcHJpbnRDb2xvcik7CisgICAgbV9hZ2VudC0+ZXhlY3V0
ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGVycm9yLCAqaW5fY29sdW1uTmFtZXMsIGluX25vdGVzLCBp
bl90aW1lc3RhbXAsICppbl92YWx1ZXMsICppbl9wYXlsb2FkLCBpbl9kYXRhYmFzZUlkLCAqaW5f
c3FsRXJyb3IsIGluX3NjcmVlbkNvbG9yLCAqaW5fYWx0ZXJuYXRlQ29sb3JzLCBpbl9wcmludENv
bG9yLCBvdXRfY29sdW1uTmFtZXMsICZvdXRfbm90ZXMsICZvdXRfdGltZXN0YW1wLCBvdXRfdmFs
dWVzLCAmb3V0X3BheWxvYWQsICZvdXRfZGF0YWJhc2VJZCwgb3V0X3NxbEVycm9yLCAmb3V0X3Nj
cmVlbkNvbG9yLCBvdXRfYWx0ZXJuYXRlQ29sb3JzLCAmb3V0X3ByaW50Q29sb3IpOwogCiAgICAg
aWYgKCFlcnJvci5sZW5ndGgoKSkgewogICAgICAgICByZXN1bHQtPnNldEFycmF5KEFTQ0lJTGl0
ZXJhbCgiY29sdW1uTmFtZXMiKSwgb3V0X2NvbHVtbk5hbWVzKTsKQEAgLTc0NCw4ICs3NDQsOCBA
QCBuYW1lc3BhY2UgSW5zcGVjdG9yIHsKIGNsYXNzIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tl
bmREaXNwYXRjaGVyIGZpbmFsIDogcHVibGljIEFsdGVybmF0ZURhdGFiYXNlQmFja2VuZERpc3Bh
dGNoZXIgewogcHVibGljOgogICAgIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRj
aGVyKGlkPFJXSVByb3RvY29sRGF0YWJhc2VEb21haW5IYW5kbGVyPiBoYW5kbGVyKSB7IG1fZGVs
ZWdhdGUgPSBoYW5kbGVyOyB9Ci0gICAgdmlydHVhbCB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBh
cmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFy
cmF5PiYmIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcqIGluX25vdGVzLCBjb25zdCBkb3Vi
bGUqIGluX3RpbWVzdGFtcCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiYmIGluX3ZhbHVlcywgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSogaW5fcGF5bG9h
ZCwgY29uc3QgaW50KiBpbl9kYXRhYmFzZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+JiYgaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyogaW5fc2NyZWVuQ29sb3Is
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGluX2FsdGVybmF0ZUNv
bG9ycywgY29uc3QgU3RyaW5nKiBpbl9wcmludENvbG9yKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFs
IHZvaWQgZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBSZWZQ
dHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mJiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3Ry
aW5nJiBpbl9ub3RlcywgZG91YmxlIGluX3RpbWVzdGFtcCwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiYmIGluX3ZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1
ZSBpbl9wYXlsb2FkLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yT2JqZWN0PiYmIGluX3NxbEVycm9yLCBjb25zdCBTdHJpbmcmIGluX3NjcmVlbkNv
bG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mJiBpbl9hbHRlcm5h
dGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgaW5fcHJpbnRDb2xvcikgb3ZlcnJpZGU7CisgICAgdmly
dHVhbCB2b2lkIGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjYWxsSWQsIGNvbnN0
IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqIGluX2NvbHVtbk5hbWVzLCBjb25zdCBTdHJpbmcq
IGluX25vdGVzLCBjb25zdCBkb3VibGUqIGluX3RpbWVzdGFtcCwgY29uc3QgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3QqIGluX3ZhbHVlcywgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1
ZSogaW5fcGF5bG9hZCwgY29uc3QgaW50KiBpbl9kYXRhYmFzZUlkLCBjb25zdCBJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdCogaW5fc3FsRXJyb3IsIGNvbnN0IFN0cmluZyogaW5fc2NyZWVuQ29s
b3IsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqIGluX2FsdGVybmF0ZUNvbG9ycywg
Y29uc3QgU3RyaW5nKiBpbl9wcmludENvbG9yKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3I6
Okluc3BlY3RvckFycmF5JiBpbl9jb2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBpbl9ub3Rlcywg
ZG91YmxlIGluX3RpbWVzdGFtcCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIGlu
X3ZhbHVlcywgSW5zcGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSBpbl9wYXlsb2FkLCBpbnQgaW5fZGF0
YWJhc2VJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QmIGluX3NxbEVycm9yLCBj
b25zdCBTdHJpbmcmIGluX3NjcmVlbkNvbG9yLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFy
cmF5JiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgaW5fcHJpbnRDb2xvcikgb3Zl
cnJpZGU7CiBwcml2YXRlOgogICAgIFJldGFpblB0cjxpZDxSV0lQcm90b2NvbERhdGFiYXNlRG9t
YWluSGFuZGxlcj4+IG1fZGVsZWdhdGU7CiB9OwpAQCAtOTI0LDcgKzkyNCw3IEBAIF9fYXR0cmli
dXRlX18oKHZpc2liaWxpdHkgKCJkZWZhdWx0IikpKQogCiBuYW1lc3BhY2UgSW5zcGVjdG9yIHsK
IAotdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZUFs
bE9wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6
SW5zcGVjdG9yQXJyYXk+JiYgaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyogaW5fbm90ZXMs
IGNvbnN0IGRvdWJsZSogaW5fdGltZXN0YW1wLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+JiYgaW5fdmFsdWVzLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvclZhbHVl
KiBpbl9wYXlsb2FkLCBjb25zdCBpbnQqIGluX2RhdGFiYXNlSWQsIGNvbnN0IFJlZlB0cjxJbnNw
ZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBpbl9zcWxFcnJvciwgY29uc3QgU3RyaW5nKiBpbl9z
Y3JlZW5Db2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgaW5f
YWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcqIGluX3ByaW50Q29sb3IpCit2b2lkIE9iakNJ
bnNwZWN0b3JEYXRhYmFzZUJhY2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQYXJh
bWV0ZXJzKGxvbmcgY2FsbElkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5KiBpbl9j
b2x1bW5OYW1lcywgY29uc3QgU3RyaW5nKiBpbl9ub3RlcywgY29uc3QgZG91YmxlKiBpbl90aW1l
c3RhbXAsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBpbl92YWx1ZXMsIGNvbnN0
IEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUqIGluX3BheWxvYWQsIGNvbnN0IGludCogaW5fZGF0
YWJhc2VJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGluX3NxbEVycm9yLCBj
b25zdCBTdHJpbmcqIGluX3NjcmVlbkNvbG9yLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3RvckFy
cmF5KiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyogaW5fcHJpbnRDb2xvcikKIHsK
ICAgICBpZCBlcnJvckNhbGxiYWNrID0gXihOU1N0cmluZyAqZXJyb3IpIHsKICAgICAgICAgYmFj
a2VuZERpc3BhdGNoZXIoKS0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgSW5zcGVjdG9yT2JqZWN0Ojpj
cmVhdGUoKSwgZXJyb3IpOwpAQCAtOTYzLDcgKzk2Myw3IEBAIHZvaWQgT2JqQ0luc3BlY3RvckRh
dGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9u
ZyBjCiAKICAgICBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKm9faW5fY29sdW1uTmFtZXM7CiAgICAg
aWYgKGluX2NvbHVtbk5hbWVzKQotICAgICAgICBvX2luX2NvbHVtbk5hbWVzID0gb2JqY1N0cmlu
Z0FycmF5KGluX2NvbHVtbk5hbWVzLmNvcHlSZWYoKSk7CisgICAgICAgIG9faW5fY29sdW1uTmFt
ZXMgPSBvYmpjU3RyaW5nQXJyYXkoaW5fY29sdW1uTmFtZXMpOwogICAgIE5TU3RyaW5nICpvX2lu
X25vdGVzOwogICAgIGlmIChpbl9ub3RlcykKICAgICAgICAgb19pbl9ub3RlcyA9ICppbl9ub3Rl
czsKQEAgLTk3MiwyMiArOTcyLDIyIEBAIHZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2Vu
ZERpc3BhdGNoZXI6OmV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnMobG9uZyBjCiAgICAgICAg
IG9faW5fdGltZXN0YW1wID0gKmluX3RpbWVzdGFtcDsKICAgICBSV0lQcm90b2NvbEpTT05PYmpl
Y3QgKm9faW5fdmFsdWVzOwogICAgIGlmIChpbl92YWx1ZXMpCi0gICAgICAgIG9faW5fdmFsdWVz
ID0gW1tbUldJUHJvdG9jb2xKU09OT2JqZWN0IGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVj
dDoqaW5fdmFsdWVzXSBhdXRvcmVsZWFzZV07CisgICAgICAgIG9faW5fdmFsdWVzID0gW1tbUldJ
UHJvdG9jb2xKU09OT2JqZWN0IGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDppbl92YWx1
ZXNdIGF1dG9yZWxlYXNlXTsKICAgICBSV0lQcm90b2NvbEpTT05PYmplY3QgKm9faW5fcGF5bG9h
ZDsKICAgICBpZiAoaW5fcGF5bG9hZCkKLSAgICAgICAgb19pbl9wYXlsb2FkID0gW1tbUldJUHJv
dG9jb2xKU09OT2JqZWN0IGFsbG9jXSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDoqaW5fcGF5bG9h
ZF0gYXV0b3JlbGVhc2VdOworICAgICAgICBvX2luX3BheWxvYWQgPSBbW1tSV0lQcm90b2NvbEpT
T05PYmplY3QgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0OmluX3BheWxvYWRdIGF1dG9y
ZWxlYXNlXTsKICAgICBpbnQgb19pbl9kYXRhYmFzZUlkOwogICAgIGlmIChpbl9kYXRhYmFzZUlk
KQogICAgICAgICBvX2luX2RhdGFiYXNlSWQgPSAqaW5fZGF0YWJhc2VJZDsKICAgICBSV0lQcm90
b2NvbERhdGFiYXNlRXJyb3IgKm9faW5fc3FsRXJyb3I7CiAgICAgaWYgKGluX3NxbEVycm9yKQot
ICAgICAgICBvX2luX3NxbEVycm9yID0gW1tbUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yIGFsbG9j
XSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDppbl9zcWxFcnJvci5jb3B5UmVmKCldIGF1dG9yZWxl
YXNlXTsKKyAgICAgICAgb19pbl9zcWxFcnJvciA9IFtbW1JXSVByb3RvY29sRGF0YWJhc2VFcnJv
ciBhbGxvY10gaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6aW5fc3FsRXJyb3JdIGF1dG9yZWxlYXNl
XTsKICAgICBSV0lQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycyBvX2luX3NjcmVlbkNvbG9y
OwogICAgIGlmIChpbl9zY3JlZW5Db2xvcikKICAgICAgICAgb19pbl9zY3JlZW5Db2xvciA9IGZy
b21Qcm90b2NvbFN0cmluZzxSV0lQcm90b2NvbERhdGFiYXNlUHJpbWFyeUNvbG9ycz4oKmluX3Nj
cmVlbkNvbG9yKTsKICAgICBOU0FycmF5Lyo8TlNTdHJpbmc+Ki8gKm9faW5fYWx0ZXJuYXRlQ29s
b3JzOwogICAgIGlmIChpbl9hbHRlcm5hdGVDb2xvcnMpCi0gICAgICAgIG9faW5fYWx0ZXJuYXRl
Q29sb3JzID0gb2JqY1N0cmluZ0FycmF5KGluX2FsdGVybmF0ZUNvbG9ycy5jb3B5UmVmKCkpOwor
ICAgICAgICBvX2luX2FsdGVybmF0ZUNvbG9ycyA9IG9iamNTdHJpbmdBcnJheShpbl9hbHRlcm5h
dGVDb2xvcnMpOwogICAgIFJXSVByb3RvY29sRGF0YWJhc2VFeGVjdXRlQWxsT3B0aW9uYWxQYXJh
bWV0ZXJzUHJpbnRDb2xvciBvX2luX3ByaW50Q29sb3I7CiAgICAgaWYgKGluX3ByaW50Q29sb3Ip
CiAgICAgICAgIG9faW5fcHJpbnRDb2xvciA9IGZyb21Qcm90b2NvbFN0cmluZzxSV0lQcm90b2Nv
bERhdGFiYXNlRXhlY3V0ZUFsbE9wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29sb3I+KCppbl9wcmlu
dENvbG9yKTsKQEAgLTk5NSw3ICs5OTUsNyBAQCB2b2lkIE9iakNJbnNwZWN0b3JEYXRhYmFzZUJh
Y2tlbmREaXNwYXRjaGVyOjpleGVjdXRlQWxsT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgYwogICAg
IFttX2RlbGVnYXRlIGV4ZWN1dGVBbGxPcHRpb25hbFBhcmFtZXRlcnNXaXRoRXJyb3JDYWxsYmFj
azplcnJvckNhbGxiYWNrIHN1Y2Nlc3NDYWxsYmFjazpzdWNjZXNzQ2FsbGJhY2sgY29sdW1uTmFt
ZXM6KGluX2NvbHVtbk5hbWVzID8gJm9faW5fY29sdW1uTmFtZXMgOiBuaWwpIG5vdGVzOihpbl9u
b3RlcyA/ICZvX2luX25vdGVzIDogbmlsKSB0aW1lc3RhbXA6KGluX3RpbWVzdGFtcCA/ICZvX2lu
X3RpbWVzdGFtcCA6IG5pbCkgdmFsdWVzOihpbl92YWx1ZXMgPyAmb19pbl92YWx1ZXMgOiBuaWwp
IHBheWxvYWQ6KGluX3BheWxvYWQgPyAmb19pbl9wYXlsb2FkIDogbmlsKSBkYXRhYmFzZUlkOihp
bl9kYXRhYmFzZUlkID8gJm9faW5fZGF0YWJhc2VJZCA6IG5pbCkgc3FsRXJyb3I6KGluX3NxbEVy
cm9yID8gJm9faW5fc3FsRXJyb3IgOiBuaWwpIHNjcmVlbkNvbG9yOihpbl9zY3JlZW5Db2xvciA/
ICZvX2luX3NjcmVlbkNvbG9yIDogbmlsKSBhbHRlcm5hdGVDb2xvcnM6KGluX2FsdGVybmF0ZUNv
bG9ycyA/ICZvX2luX2FsdGVybmF0ZUNvbG9ycyA6IG5pbCkgcHJpbnRDb2xvcjooaW5fcHJpbnRD
b2xvciA/ICZvX2luX3ByaW50Q29sb3IgOiBuaWwpXTsKIH0KIAotdm9pZCBPYmpDSW5zcGVjdG9y
RGF0YWJhc2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxv
bmcgY2FsbElkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheT4mJiBpbl9j
b2x1bW5OYW1lcywgY29uc3QgU3RyaW5nJiBpbl9ub3RlcywgZG91YmxlIGluX3RpbWVzdGFtcCwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGluX3ZhbHVlcywgSW5z
cGVjdG9yOjpJbnNwZWN0b3JWYWx1ZSBpbl9wYXlsb2FkLCBpbnQgaW5fZGF0YWJhc2VJZCwgY29u
c3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGluX3NxbEVycm9yLCBjb25z
dCBTdHJpbmcmIGluX3NjcmVlbkNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JBcnJheT4mJiBpbl9hbHRlcm5hdGVDb2xvcnMsIGNvbnN0IFN0cmluZyYgaW5fcHJpbnRDb2xv
cikKK3ZvaWQgT2JqQ0luc3BlY3RvckRhdGFiYXNlQmFja2VuZERpc3BhdGNoZXI6OmV4ZWN1dGVO
b09wdGlvbmFsUGFyYW1ldGVycyhsb25nIGNhbGxJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0
b3JBcnJheSYgaW5fY29sdW1uTmFtZXMsIGNvbnN0IFN0cmluZyYgaW5fbm90ZXMsIGRvdWJsZSBp
bl90aW1lc3RhbXAsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBpbl92YWx1ZXMs
IEluc3BlY3Rvcjo6SW5zcGVjdG9yVmFsdWUgaW5fcGF5bG9hZCwgaW50IGluX2RhdGFiYXNlSWQs
IGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBpbl9zcWxFcnJvciwgY29uc3QgU3Ry
aW5nJiBpbl9zY3JlZW5Db2xvciwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJheSYgaW5f
YWx0ZXJuYXRlQ29sb3JzLCBjb25zdCBTdHJpbmcmIGluX3ByaW50Q29sb3IpCiB7CiAgICAgaWQg
ZXJyb3JDYWxsYmFjayA9IF4oTlNTdHJpbmcgKmVycm9yKSB7CiAgICAgICAgIGJhY2tlbmREaXNw
YXRjaGVyKCktPnNlbmRSZXNwb25zZShjYWxsSWQsIEluc3BlY3Rvck9iamVjdDo6Y3JlYXRlKCks
IGVycm9yKTsKQEAgLTEwMjIsMTUgKzEwMjIsMTUgQEAgdm9pZCBPYmpDSW5zcGVjdG9yRGF0YWJh
c2VCYWNrZW5kRGlzcGF0Y2hlcjo6ZXhlY3V0ZU5vT3B0aW9uYWxQYXJhbWV0ZXJzKGxvbmcgY2EK
ICAgICAgICAgYmFja2VuZERpc3BhdGNoZXIoKS0+c2VuZFJlc3BvbnNlKGNhbGxJZCwgV1RGOjpt
b3ZlKHJlc3VsdE9iamVjdCksIFN0cmluZygpKTsKICAgICB9OwogCi0gICAgTlNBcnJheS8qPE5T
U3RyaW5nPiovICpvX2luX2NvbHVtbk5hbWVzID0gb2JqY1N0cmluZ0FycmF5KGluX2NvbHVtbk5h
bWVzLmNvcHlSZWYoKSk7CisgICAgTlNBcnJheS8qPE5TU3RyaW5nPiovICpvX2luX2NvbHVtbk5h
bWVzID0gb2JqY1N0cmluZ0FycmF5KCZpbl9jb2x1bW5OYW1lcyk7CiAgICAgTlNTdHJpbmcgKm9f
aW5fbm90ZXMgPSBpbl9ub3RlczsKICAgICBkb3VibGUgb19pbl90aW1lc3RhbXAgPSBpbl90aW1l
c3RhbXA7Ci0gICAgUldJUHJvdG9jb2xKU09OT2JqZWN0ICpvX2luX3ZhbHVlcyA9IFtbW1JXSVBy
b3RvY29sSlNPTk9iamVjdCBhbGxvY10gaW5pdFdpdGhJbnNwZWN0b3JPYmplY3Q6aW5fdmFsdWVz
XSBhdXRvcmVsZWFzZV07Ci0gICAgUldJUHJvdG9jb2xKU09OT2JqZWN0ICpvX2luX3BheWxvYWQg
PSBbW1tSV0lQcm90b2NvbEpTT05PYmplY3QgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0
OmluX3BheWxvYWRdIGF1dG9yZWxlYXNlXTsKKyAgICBSV0lQcm90b2NvbEpTT05PYmplY3QgKm9f
aW5fdmFsdWVzID0gW1tbUldJUHJvdG9jb2xKU09OT2JqZWN0IGFsbG9jXSBpbml0V2l0aEluc3Bl
Y3Rvck9iamVjdDomaW5fdmFsdWVzXSBhdXRvcmVsZWFzZV07CisgICAgUldJUHJvdG9jb2xKU09O
T2JqZWN0ICpvX2luX3BheWxvYWQgPSBbW1tSV0lQcm90b2NvbEpTT05PYmplY3QgYWxsb2NdIGlu
aXRXaXRoSW5zcGVjdG9yT2JqZWN0OiZpbl9wYXlsb2FkXSBhdXRvcmVsZWFzZV07CiAgICAgaW50
IG9faW5fZGF0YWJhc2VJZCA9IGluX2RhdGFiYXNlSWQ7Ci0gICAgUldJUHJvdG9jb2xEYXRhYmFz
ZUVycm9yICpvX2luX3NxbEVycm9yID0gW1tbUldJUHJvdG9jb2xEYXRhYmFzZUVycm9yIGFsbG9j
XSBpbml0V2l0aEluc3BlY3Rvck9iamVjdDppbl9zcWxFcnJvci5jb3B5UmVmKCldIGF1dG9yZWxl
YXNlXTsKKyAgICBSV0lQcm90b2NvbERhdGFiYXNlRXJyb3IgKm9faW5fc3FsRXJyb3IgPSBbW1tS
V0lQcm90b2NvbERhdGFiYXNlRXJyb3IgYWxsb2NdIGluaXRXaXRoSW5zcGVjdG9yT2JqZWN0OiZp
bl9zcWxFcnJvcl0gYXV0b3JlbGVhc2VdOwogICAgIFJXSVByb3RvY29sRGF0YWJhc2VQcmltYXJ5
Q29sb3JzIG9faW5fc2NyZWVuQ29sb3IgPSBmcm9tUHJvdG9jb2xTdHJpbmc8UldJUHJvdG9jb2xE
YXRhYmFzZVByaW1hcnlDb2xvcnM+KGluX3NjcmVlbkNvbG9yKTsKLSAgICBOU0FycmF5Lyo8TlNT
dHJpbmc+Ki8gKm9faW5fYWx0ZXJuYXRlQ29sb3JzID0gb2JqY1N0cmluZ0FycmF5KGluX2FsdGVy
bmF0ZUNvbG9ycy5jb3B5UmVmKCkpOworICAgIE5TQXJyYXkvKjxOU1N0cmluZz4qLyAqb19pbl9h
bHRlcm5hdGVDb2xvcnMgPSBvYmpjU3RyaW5nQXJyYXkoJmluX2FsdGVybmF0ZUNvbG9ycyk7CiAg
ICAgUldJUHJvdG9jb2xEYXRhYmFzZUV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1ByaW50Q29s
b3Igb19pbl9wcmludENvbG9yID0gZnJvbVByb3RvY29sU3RyaW5nPFJXSVByb3RvY29sRGF0YWJh
c2VFeGVjdXRlTm9PcHRpb25hbFBhcmFtZXRlcnNQcmludENvbG9yPihpbl9wcmludENvbG9yKTsK
IAogICAgIFttX2RlbGVnYXRlIGV4ZWN1dGVOb09wdGlvbmFsUGFyYW1ldGVyc1dpdGhFcnJvckNh
bGxiYWNrOmVycm9yQ2FsbGJhY2sgc3VjY2Vzc0NhbGxiYWNrOnN1Y2Nlc3NDYWxsYmFjayBjb2x1
bW5OYW1lczpvX2luX2NvbHVtbk5hbWVzIG5vdGVzOm9faW5fbm90ZXMgdGltZXN0YW1wOm9faW5f
dGltZXN0YW1wIHZhbHVlczpvX2luX3ZhbHVlcyBwYXlsb2FkOm9faW5fcGF5bG9hZCBkYXRhYmFz
ZUlkOm9faW5fZGF0YWJhc2VJZCBzcWxFcnJvcjpvX2luX3NxbEVycm9yIHNjcmVlbkNvbG9yOm9f
aW5fc2NyZWVuQ29sb3IgYWx0ZXJuYXRlQ29sb3JzOm9faW5fYWx0ZXJuYXRlQ29sb3JzIHByaW50
Q29sb3I6b19pbl9wcmludENvbG9yXTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL0NoYW5n
ZUxvZyBiL1NvdXJjZS9XZWJDb3JlL0NoYW5nZUxvZwppbmRleCA4Y2Q2NmMyLi43MDllMTlhIDEw
MDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9DaGFuZ2VMb2cKKysrIGIvU291cmNlL1dlYkNvcmUv
Q2hhbmdlTG9nCkBAIC0xLDMgKzEsNjIgQEAKKzIwMTUtMDYtMTggIEJyaWFuIEouIEJ1cmcgIDxi
dXJnQGNzLndhc2hpbmd0b24uZWR1PgorCisgICAgICAgIFdlYiBJbnNwZWN0b3I6IGltcHJvdmUg
Z2VuZXJhdGVkIHR5cGVzIGZvciBvYmplY3RzIHBhc3NlZCB0byBiYWNrZW5kIGNvbW1hbmRzCisg
ICAgICAgIGh0dHBzOi8vYnVncy53ZWJraXQub3JnL3Nob3dfYnVnLmNnaT9pZD0xNDYwOTEKKwor
ICAgICAgICBSZXZpZXdlZCBieSBKb3NlcGggUGVjb3Jhcm8uCisKKyAgICAgICAgVXBkYXRlIHR5
cGUgc2lnbmF0dXJlcyBmb3IgYmFja2VuZCBjb21tYW5kIGltcGxlbWVudGF0aW9ucy4gSW4gYSBm
ZXcgY2FzZXMsIGNsZWFuCisgICAgICAgIHVwIHJlbGV2YW50IGhlbHBlciBmdW5jdGlvbiBzaWdu
YXR1cmVzIGFuZCBjb3B5IGRhdGEgb3V0IG9mIHBhcmFtZXRlciBvYmplY3RzIHdoZXJlCisgICAg
ICAgIHRoZSBjb2RlIHByZXZpb3VzbHkgaGVsZCBvbnRvIGEgcmVmZXJlbmNlLgorCisgICAgICAg
IE5vIG5ldyB0ZXN0cywgbm8gYmVoYXZpb3IgY2hhbmdlZC4KKworICAgICAgICAqIGluc3BlY3Rv
ci9JbnNwZWN0b3JDU1NBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpjb21wdXRlUHNldWRv
Q2xhc3NNYXNrKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvckNTU0FnZW50OjpzZXRTdHls
ZVRleHQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yQ1NTQWdlbnQ6OnNldFJ1bGVTZWxl
Y3Rvcik6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JDU1NBZ2VudDo6Zm9yY2VQc2V1ZG9T
dGF0ZSk6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50Lmg6CisgICAgICAg
ICogaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OnBh
cnNlQ29sb3IpOgorICAgICAgICAoV2ViQ29yZTo6cGFyc2VDb25maWdDb2xvcik6CisgICAgICAg
IChXZWJDb3JlOjpwYXJzZVF1YWQpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OnBlcmZvcm1TZWFyY2gpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdlbnQ6
OnNldFNlYXJjaGluZ0Zvck5vZGUpOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yRE9NQWdl
bnQ6OmhpZ2hsaWdodENvbmZpZ0Zyb21JbnNwZWN0b3JPYmplY3QpOgorICAgICAgICAoV2ViQ29y
ZTo6SW5zcGVjdG9yRE9NQWdlbnQ6OnNldEluc3BlY3RNb2RlRW5hYmxlZCk6CisgICAgICAgIChX
ZWJDb3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UmVjdCk6CisgICAgICAgIChXZWJD
b3JlOjpJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UXVhZCk6CisgICAgICAgIChXZWJDb3Jl
OjpJbnNwZWN0b3JET01BZ2VudDo6aW5uZXJIaWdobGlnaHRRdWFkKToKKyAgICAgICAgKFdlYkNv
cmU6Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHROb2RlKToKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRGcmFtZSk6CisgICAgICAgICogaW5zcGVjdG9y
L0luc3BlY3RvckRPTUFnZW50Lmg6CisgICAgICAgICogaW5zcGVjdG9yL0luc3BlY3RvckRPTVN0
b3JhZ2VBZ2VudC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQ6OmdldERPTVN0b3JhZ2VJdGVtcyk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQ6OnNldERPTVN0b3JhZ2VJdGVtKToKKyAgICAgICAgKFdlYkNvcmU6Okluc3Bl
Y3RvckRPTVN0b3JhZ2VBZ2VudDo6cmVtb3ZlRE9NU3RvcmFnZUl0ZW0pOgorICAgICAgICAoV2Vi
Q29yZTo6SW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpmaW5kU3RvcmFnZUFyZWEpOgorICAgICAg
ICAqIGluc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaDoKKyAgICAgICAgKiBpbnNw
ZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhKToKKyAgICAgICAgKiBpbnNwZWN0b3Iv
SW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaDoKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVjdG9y
UmVwbGF5QWdlbnQuY3BwOgorICAgICAgICAoV2ViQ29yZTo6SW5zcGVjdG9yUmVwbGF5QWdlbnQ6
OnJlcGxheVRvUG9zaXRpb24pOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXBsYXlB
Z2VudC5oOgorICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmNwcDoK
KyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3RvclJlc291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVz
dCk6CisgICAgICAgIChXZWJDb3JlOjpJbnNwZWN0b3JSZXNvdXJjZUFnZW50OjpzZXRFeHRyYUhU
VFBIZWFkZXJzKToKKyAgICAgICAgQ2xlYW4gdXAgZXh0cmFIVFRQSGVhZGVycyB0byBjb3B5IGhl
YWRlciBrZXkvdmFsdWVzIG91dCBvZiB0aGUgSW5zcGVjdG9yT2JqZWN0LCByYXRoZXIKKyAgICAg
ICAgdGhhbiByZXRhaW5pbmcgdGhlIHByb3RvY29sIG9iamVjdCBpbmRlZmluaXRlbHkuIFRoaXMg
bWF0Y2hlcyB0aGUgb3duZXJzaGlwIHNjaGVtZSB1c2VkCisgICAgICAgIGV2ZXJ5d2hlcmUgZWxz
ZS4KKworICAgICAgICAqIGluc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50Lmg6CisgICAg
ICAgICogaW5zcGVjdG9yL0luc3BlY3RvclN0eWxlU2hlZXQuaDoKKyAgICAgICAgKFdlYkNvcmU6
Okluc3BlY3RvckNTU0lkOjpJbnNwZWN0b3JDU1NJZCk6CisgICAgICAgICogaW5zcGVjdG9yL0lu
c3BlY3RvcldvcmtlckFnZW50LmNwcDoKKyAgICAgICAgKFdlYkNvcmU6Okluc3BlY3Rvcldvcmtl
ckFnZW50OjpzZW5kTWVzc2FnZVRvV29ya2VyKToKKyAgICAgICAgKiBpbnNwZWN0b3IvSW5zcGVj
dG9yV29ya2VyQWdlbnQuaDoKKwogMjAxNS0wNi0xNyAgQWxleCBDaHJpc3RlbnNlbiAgPGFjaHJp
c3RlbnNlbkB3ZWJraXQub3JnPgogCiAgICAgICAgIFtDb250ZW50IEV4dGVuc2lvbnNdIExvZyBi
bG9ja2VkIGxvYWRzIHRvIHRoZSBXZWJJbnNwZWN0b3IgY29uc29sZQpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5jcHAKaW5kZXggODUzMjFkZC4uYTkwODNk
MCAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckNTU0FnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yQ1NTQWdlbnQuY3Bw
CkBAIC03MiwxOCArNzIsMTggQEAgZW51bSBGb3JjZVBzZXVkb0NsYXNzRmxhZ3MgewogICAgIFBz
ZXVkb0NsYXNzVmlzaXRlZCA9IDEgPDwgMwogfTsKIAotc3RhdGljIHVuc2lnbmVkIGNvbXB1dGVQ
c2V1ZG9DbGFzc01hc2soSW5zcGVjdG9yQXJyYXkqIHBzZXVkb0NsYXNzQXJyYXkpCitzdGF0aWMg
dW5zaWduZWQgY29tcHV0ZVBzZXVkb0NsYXNzTWFzayhjb25zdCBJbnNwZWN0b3JBcnJheSYgcHNl
dWRvQ2xhc3NBcnJheSkKIHsKICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3Ry
aW5nLCBhY3RpdmUsIChBU0NJSUxpdGVyYWwoImFjdGl2ZSIpKSk7CiAgICAgREVQUkVDQVRFRF9E
RUZJTkVfU1RBVElDX0xPQ0FMKFN0cmluZywgaG92ZXIsIChBU0NJSUxpdGVyYWwoImhvdmVyIikp
KTsKICAgICBERVBSRUNBVEVEX0RFRklORV9TVEFUSUNfTE9DQUwoU3RyaW5nLCBmb2N1cywgKEFT
Q0lJTGl0ZXJhbCgiZm9jdXMiKSkpOwogICAgIERFUFJFQ0FURURfREVGSU5FX1NUQVRJQ19MT0NB
TChTdHJpbmcsIHZpc2l0ZWQsIChBU0NJSUxpdGVyYWwoInZpc2l0ZWQiKSkpOwotICAgIGlmICgh
cHNldWRvQ2xhc3NBcnJheSB8fCAhcHNldWRvQ2xhc3NBcnJheS0+bGVuZ3RoKCkpCisgICAgaWYg
KCFwc2V1ZG9DbGFzc0FycmF5Lmxlbmd0aCgpKQogICAgICAgICByZXR1cm4gUHNldWRvQ2xhc3NO
b25lOwogCiAgICAgdW5zaWduZWQgcmVzdWx0ID0gUHNldWRvQ2xhc3NOb25lOwotICAgIGZvciAo
c2l6ZV90IGkgPSAwOyBpIDwgcHNldWRvQ2xhc3NBcnJheS0+bGVuZ3RoKCk7ICsraSkgewotICAg
ICAgICBSZWZQdHI8SW5zcGVjdG9yVmFsdWU+IHBzZXVkb0NsYXNzVmFsdWUgPSBwc2V1ZG9DbGFz
c0FycmF5LT5nZXQoaSk7CisgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBwc2V1ZG9DbGFzc0Fy
cmF5Lmxlbmd0aCgpOyArK2kpIHsKKyAgICAgICAgUmVmUHRyPEluc3BlY3RvclZhbHVlPiBwc2V1
ZG9DbGFzc1ZhbHVlID0gcHNldWRvQ2xhc3NBcnJheS5nZXQoaSk7CiAgICAgICAgIFN0cmluZyBw
c2V1ZG9DbGFzczsKICAgICAgICAgYm9vbCBzdWNjZXNzID0gcHNldWRvQ2xhc3NWYWx1ZS0+YXNT
dHJpbmcocHNldWRvQ2xhc3MpOwogICAgICAgICBpZiAoIXN1Y2Nlc3MpCkBAIC02MjQsOSArNjI0
LDkgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0U3R5bGVTaGVldFRleHQoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcKICAgICBlcnJvclN0cmluZyA9IEluc3BlY3Rv
ckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKGVjKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2Vu
dDo6c2V0U3R5bGVUZXh0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4mJiBmdWxsU3R5bGVJZCwgY29uc3QgU3RyaW5nJiB0ZXh0LCBSZWZQdHI8
SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NTdHlsZT4mIHJlc3VsdCkKK3ZvaWQgSW5zcGVj
dG9yQ1NTQWdlbnQ6OnNldFN0eWxlVGV4dChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0
IEluc3BlY3Rvck9iamVjdCYgZnVsbFN0eWxlSWQsIGNvbnN0IFN0cmluZyYgdGV4dCwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTU3R5bGU+JiByZXN1bHQpCiB7Ci0gICAgSW5z
cGVjdG9yQ1NTSWQgY29tcG91bmRJZChmdWxsU3R5bGVJZC5jb3B5UmVmKCkpOworICAgIEluc3Bl
Y3RvckNTU0lkIGNvbXBvdW5kSWQoZnVsbFN0eWxlSWQpOwogICAgIEFTU0VSVCghY29tcG91bmRJ
ZC5pc0VtcHR5KCkpOwogCiAgICAgSW5zcGVjdG9yU3R5bGVTaGVldCogaW5zcGVjdG9yU3R5bGVT
aGVldCA9IGFzc2VydFN0eWxlU2hlZXRGb3JJZChlcnJvclN0cmluZywgY29tcG91bmRJZC5zdHls
ZVNoZWV0SWQoKSk7CkBAIC02NDAsOSArNjQwLDkgQEAgdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6
c2V0U3R5bGVUZXh0KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3AK
ICAgICBlcnJvclN0cmluZyA9IEluc3BlY3RvckRPTUFnZW50Ojp0b0Vycm9yU3RyaW5nKGVjKTsK
IH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBmdWxsUnVsZUlk
LCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6Q1NT
OjpDU1NSdWxlPiYgcmVzdWx0KQordm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6c2V0UnVsZVNlbGVj
dG9yKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSW5zcGVjdG9yT2JqZWN0JiBmdWxs
UnVsZUlkLCBjb25zdCBTdHJpbmcmIHNlbGVjdG9yLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6Q1NTOjpDU1NSdWxlPiYgcmVzdWx0KQogewotICAgIEluc3BlY3RvckNTU0lkIGNvbXBvdW5k
SWQoZnVsbFJ1bGVJZC5jb3B5UmVmKCkpOworICAgIEluc3BlY3RvckNTU0lkIGNvbXBvdW5kSWQo
ZnVsbFJ1bGVJZCk7CiAgICAgQVNTRVJUKCFjb21wb3VuZElkLmlzRW1wdHkoKSk7CiAKICAgICBJ
bnNwZWN0b3JTdHlsZVNoZWV0KiBpbnNwZWN0b3JTdHlsZVNoZWV0ID0gYXNzZXJ0U3R5bGVTaGVl
dEZvcklkKGVycm9yU3RyaW5nLCBjb21wb3VuZElkLnN0eWxlU2hlZXRJZCgpKTsKQEAgLTcwOCwx
MyArNzA4LDEzIEBAIHZvaWQgSW5zcGVjdG9yQ1NTQWdlbnQ6OmdldFN1cHBvcnRlZENTU1Byb3Bl
cnRpZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yCiAgICAgY3NzUHJvcGVydGllcyA9
IFdURjo6bW92ZShwcm9wZXJ0aWVzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JDU1NBZ2VudDo6Zm9y
Y2VQc2V1ZG9TdGF0ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGludCBub2RlSWQsIGNvbnN0
IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mJiBmb3JjZWRQc2V1ZG9DbGFzc2VzKQordm9pZCBJbnNw
ZWN0b3JDU1NBZ2VudDo6Zm9yY2VQc2V1ZG9TdGF0ZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcs
IGludCBub2RlSWQsIGNvbnN0IEluc3BlY3RvckFycmF5JiBmb3JjZWRQc2V1ZG9DbGFzc2VzKQog
ewogICAgIEVsZW1lbnQqIGVsZW1lbnQgPSBtX2RvbUFnZW50LT5hc3NlcnRFbGVtZW50KGVycm9y
U3RyaW5nLCBub2RlSWQpOwogICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0dXJuOwogCi0g
ICAgdW5zaWduZWQgZm9yY2VkUHNldWRvU3RhdGUgPSBjb21wdXRlUHNldWRvQ2xhc3NNYXNrKGZv
cmNlZFBzZXVkb0NsYXNzZXMuZ2V0KCkpOworICAgIHVuc2lnbmVkIGZvcmNlZFBzZXVkb1N0YXRl
ID0gY29tcHV0ZVBzZXVkb0NsYXNzTWFzayhmb3JjZWRQc2V1ZG9DbGFzc2VzKTsKICAgICBOb2Rl
SWRUb0ZvcmNlZFBzZXVkb1N0YXRlOjppdGVyYXRvciBpdCA9IG1fbm9kZUlkVG9Gb3JjZWRQc2V1
ZG9TdGF0ZS5maW5kKG5vZGVJZCk7CiAgICAgdW5zaWduZWQgY3VycmVudEZvcmNlZFBzZXVkb1N0
YXRlID0gaXQgPT0gbV9ub2RlSWRUb0ZvcmNlZFBzZXVkb1N0YXRlLmVuZCgpID8gMCA6IGl0LT52
YWx1ZTsKICAgICBib29sIG5lZWRTdHlsZVJlY2FsYyA9IGZvcmNlZFBzZXVkb1N0YXRlICE9IGN1
cnJlbnRGb3JjZWRQc2V1ZG9TdGF0ZTsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3Bl
Y3RvckNTU0FnZW50LmgKaW5kZXggZTRhNjAzNzkuLmE2MzBmZTUgMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JDU1NBZ2VudC5oCkBAIC0xMTUsMTEgKzExNSwxMSBAQCBw
dWJsaWM6CiAgICAgdmlydHVhbCB2b2lkIGdldFN0eWxlU2hlZXQoRXJyb3JTdHJpbmcmLCBjb25z
dCBTdHJpbmcmIHN0eWxlU2hlZXRJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6
Q1NTU3R5bGVTaGVldEJvZHk+JiByZXN1bHQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBn
ZXRTdHlsZVNoZWV0VGV4dChFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc3R5bGVTaGVldElk
LCBTdHJpbmcqIHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHNldFN0eWxlU2hl
ZXRUZXh0KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzdHlsZVNoZWV0SWQsIGNvbnN0IFN0
cmluZyYgdGV4dCkgb3ZlcnJpZGU7Ci0gICAgdmlydHVhbCB2b2lkIHNldFN0eWxlVGV4dChFcnJv
clN0cmluZyYsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBzdHls
ZUlkLCBjb25zdCBTdHJpbmcmIHRleHQsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6
OkNTU1N0eWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0UnVsZVNl
bGVjdG9yKEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiYmIHJ1bGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvcjo6
UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIHNldFN0eWxlVGV4dChFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0JiBzdHlsZUlkLCBjb25zdCBTdHJpbmcmIHRleHQsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpDU1M6OkNTU1N0eWxlPiYgcmVzdWx0KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZv
aWQgc2V0UnVsZVNlbGVjdG9yKEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3QmIHJ1bGVJZCwgY29uc3QgU3RyaW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rv
cjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4mIHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGFkZFJ1bGUoRXJyb3JTdHJpbmcmLCBpbnQgY29udGV4dE5vZGVJZCwgY29uc3QgU3Ry
aW5nJiBzZWxlY3RvciwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkNTUzo6Q1NTUnVsZT4m
IHJlc3VsdCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGdldFN1cHBvcnRlZENTU1Byb3Bl
cnRpZXMoRXJyb3JTdHJpbmcmLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8SW5z
cGVjdG9yOjpQcm90b2NvbDo6Q1NTOjpDU1NQcm9wZXJ0eUluZm8+PiYgcmVzdWx0KSBvdmVycmlk
ZTsKLSAgICB2aXJ0dWFsIHZvaWQgZm9yY2VQc2V1ZG9TdGF0ZShFcnJvclN0cmluZyYsIGludCBu
b2RlSWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3RvckFycmF5PiYmIGZvcmNlZFBz
ZXVkb0NsYXNzZXMpIG92ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBmb3JjZVBzZXVkb1N0YXRl
KEVycm9yU3RyaW5nJiwgaW50IG5vZGVJZCwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JBcnJh
eSYgZm9yY2VkUHNldWRvQ2xhc3Nlcykgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGdldE5h
bWVkRmxvd0NvbGxlY3Rpb24oRXJyb3JTdHJpbmcmLCBpbnQgZG9jdW1lbnROb2RlSWQsIFJlZlB0
cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpDU1M6Ok5h
bWVkRmxvdz4+JiByZXN1bHQpIG92ZXJyaWRlOwogCiBwcml2YXRlOgpkaWZmIC0tZ2l0IGEvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmNwcCBiL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5jcHAKaW5kZXggYzg3NDcxNS4uN2ZhNDJi
YiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50
LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NQWdlbnQuY3Bw
CkBAIC0xMDMsNyArMTAzLDcgQEAgdXNpbmcgbmFtZXNwYWNlIEhUTUxOYW1lczsKIHN0YXRpYyBj
b25zdCBzaXplX3QgbWF4VGV4dFNpemUgPSAxMDAwMDsKIHN0YXRpYyBjb25zdCBVQ2hhciBlbGxp
cHNpc1VDaGFyW10gPSB7IDB4MjAyNiwgMCB9OwogCi1zdGF0aWMgQ29sb3IgcGFyc2VDb2xvcihj
b25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGNvbG9yT2JqZWN0KQorc3RhdGljIENvbG9y
IHBhcnNlQ29sb3IoY29uc3QgSW5zcGVjdG9yT2JqZWN0KiBjb2xvck9iamVjdCkKIHsKICAgICBp
ZiAoIWNvbG9yT2JqZWN0KQogICAgICAgICByZXR1cm4gQ29sb3I6OnRyYW5zcGFyZW50OwpAQCAt
MTI3LDIzICsxMjcsMjIgQEAgc3RhdGljIENvbG9yIHBhcnNlQ29sb3IoY29uc3QgUmVmUHRyPElu
c3BlY3Rvck9iamVjdD4mJiBjb2xvck9iamVjdCkKICAgICByZXR1cm4gQ29sb3IociwgZywgYiwg
c3RhdGljX2Nhc3Q8aW50PihhICogMjU1KSk7CiB9CiAKLXN0YXRpYyBDb2xvciBwYXJzZUNvbmZp
Z0NvbG9yKGNvbnN0IFN0cmluZyYgZmllbGROYW1lLCBJbnNwZWN0b3JPYmplY3QqIGNvbmZpZ09i
amVjdCkKK3N0YXRpYyBDb2xvciBwYXJzZUNvbmZpZ0NvbG9yKGNvbnN0IFN0cmluZyYgZmllbGRO
YW1lLCBjb25zdCBJbnNwZWN0b3JPYmplY3QqIGNvbmZpZ09iamVjdCkKIHsKICAgICBSZWZQdHI8
SW5zcGVjdG9yT2JqZWN0PiBjb2xvck9iamVjdDsKICAgICBjb25maWdPYmplY3QtPmdldE9iamVj
dChmaWVsZE5hbWUsIGNvbG9yT2JqZWN0KTsKLSAgICByZXR1cm4gcGFyc2VDb2xvcihXVEY6Om1v
dmUoY29sb3JPYmplY3QpKTsKKworICAgIHJldHVybiBwYXJzZUNvbG9yKGNvbG9yT2JqZWN0Lmdl
dCgpKTsKIH0KIAotc3RhdGljIGJvb2wgcGFyc2VRdWFkKGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JB
cnJheT4mIHF1YWRBcnJheSwgRmxvYXRRdWFkKiBxdWFkKQorc3RhdGljIGJvb2wgcGFyc2VRdWFk
KGNvbnN0IEluc3BlY3RvckFycmF5JiBxdWFkQXJyYXksIEZsb2F0UXVhZCogcXVhZCkKIHsKLSAg
ICBpZiAoIXF1YWRBcnJheSkKLSAgICAgICAgcmV0dXJuIGZhbHNlOwogICAgIGNvbnN0IHNpemVf
dCBjb29yZGluYXRlc0luUXVhZCA9IDg7CiAgICAgZG91YmxlIGNvb3JkaW5hdGVzW2Nvb3JkaW5h
dGVzSW5RdWFkXTsKLSAgICBpZiAocXVhZEFycmF5LT5sZW5ndGgoKSAhPSBjb29yZGluYXRlc0lu
UXVhZCkKKyAgICBpZiAocXVhZEFycmF5Lmxlbmd0aCgpICE9IGNvb3JkaW5hdGVzSW5RdWFkKQog
ICAgICAgICByZXR1cm4gZmFsc2U7CiAgICAgZm9yIChzaXplX3QgaSA9IDA7IGkgPCBjb29yZGlu
YXRlc0luUXVhZDsgKytpKSB7Ci0gICAgICAgIGlmICghcXVhZEFycmF5LT5nZXQoaSktPmFzRG91
YmxlKCooY29vcmRpbmF0ZXMgKyBpKSkpCisgICAgICAgIGlmICghcXVhZEFycmF5LmdldChpKS0+
YXNEb3VibGUoKihjb29yZGluYXRlcyArIGkpKSkKICAgICAgICAgICAgIHJldHVybiBmYWxzZTsK
ICAgICB9CiAgICAgcXVhZC0+c2V0UDEoRmxvYXRQb2ludChjb29yZGluYXRlc1swXSwgY29vcmRp
bmF0ZXNbMV0pKTsKQEAgLTg3NCw3ICs4NzMsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50Ojpn
ZXRBY2Nlc3NpYmlsaXR5UHJvcGVydGllc0Zvck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaQog
ICAgIGF4UHJvcGVydGllcyA9IGJ1aWxkT2JqZWN0Rm9yQWNjZXNzaWJpbGl0eVByb3BlcnRpZXMo
bm9kZSk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnBlcmZvcm1TZWFyY2goRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltbWVkUXVlcnks
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mJiBub2RlSWRzLCBTdHJpbmcqIHNlYXJjaElk
LCBpbnQqIHJlc3VsdENvdW50KQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6cGVyZm9ybVNlYXJj
aChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1t
ZWRRdWVyeSwgY29uc3QgSW5zcGVjdG9yQXJyYXkqIG5vZGVJZHMsIFN0cmluZyogc2VhcmNoSWQs
IGludCogcmVzdWx0Q291bnQpCiB7CiAgICAgLy8gRklYTUU6IFNlYXJjaCB3b3JrcyB3aXRoIG5v
ZGUgZ3JhbnVsYXJpdHkgLSBudW1iZXIgb2YgbWF0Y2hlcyB3aXRoaW4gbm9kZSBpcyBub3QgY2Fs
Y3VsYXRlZC4KICAgICBJbnNwZWN0b3JOb2RlRmluZGVyIGZpbmRlcih3aGl0ZXNwYWNlVHJpbW1l
ZFF1ZXJ5KTsKQEAgLTEwMTIsNyArMTAxMSw3IEBAIHZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6Om1v
dXNlRGlkTW92ZU92ZXJFbGVtZW50KGNvbnN0IEhpdFRlc3RSZXN1bHQmIHJlc3VsdCwgdW5zCiAg
ICAgICAgIG1fb3ZlcmxheS0+aGlnaGxpZ2h0Tm9kZShub2RlLCAqbV9pbnNwZWN0TW9kZUhpZ2hs
aWdodENvbmZpZyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OnNldFNlYXJjaGluZ0Zv
ck5vZGUoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBib29sIGVuYWJsZWQsIEluc3BlY3Rvck9i
amVjdCogaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KQordm9pZCBJbnNwZWN0b3JET01BZ2VudDo6
c2V0U2VhcmNoaW5nRm9yTm9kZShFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGJvb2wgZW5hYmxl
ZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRJbnNwZWN0b3JPYmplY3QpCiB7CiAg
ICAgaWYgKG1fc2VhcmNoaW5nRm9yTm9kZSA9PSBlbmFibGVkKQogICAgICAgICByZXR1cm47CkBA
IC0xMDI3LDcgKzEwMjYsNyBAQCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpzZXRTZWFyY2hpbmdG
b3JOb2RlKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgYm9vbCBlbmFibAogICAgIG1fb3Zlcmxh
eS0+ZGlkU2V0U2VhcmNoaW5nRm9yTm9kZShtX3NlYXJjaGluZ0Zvck5vZGUpOwogfQogCi1zdGQ6
OnVuaXF1ZV9wdHI8SGlnaGxpZ2h0Q29uZmlnPiBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0
Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIEluc3Bl
Y3Rvck9iamVjdCogaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KQorc3RkOjp1bmlxdWVfcHRyPEhp
Z2hsaWdodENvbmZpZz4gSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodENvbmZpZ0Zyb21JbnNw
ZWN0b3JPYmplY3QoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBJbnNwZWN0b3JPYmpl
Y3QqIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCkKIHsKICAgICBpZiAoIWhpZ2hsaWdodEluc3Bl
Y3Rvck9iamVjdCkgewogICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiSW50ZXJu
YWwgZXJyb3I6IGhpZ2hsaWdodCBjb25maWd1cmF0aW9uIHBhcmFtZXRlciBpcyBtaXNzaW5nIik7
CkBAIC0xMDQ2LDM3ICsxMDQ1LDM3IEBAIHN0ZDo6dW5pcXVlX3B0cjxIaWdobGlnaHRDb25maWc+
IEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yCiAgICAgcmV0
dXJuIGhpZ2hsaWdodENvbmZpZzsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6c2V0SW5z
cGVjdE1vZGVFbmFibGVkKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgYm9vbCBlbmFibGVkLCBj
b25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIGhpZ2hsaWdodENvbmZpZykKK3ZvaWQgSW5z
cGVjdG9yRE9NQWdlbnQ6OnNldEluc3BlY3RNb2RlRW5hYmxlZChFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGJvb2wgZW5hYmxlZCwgY29uc3QgSW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRDb25m
aWcpCiB7Ci0gICAgc2V0U2VhcmNoaW5nRm9yTm9kZShlcnJvclN0cmluZywgZW5hYmxlZCwgaGln
aGxpZ2h0Q29uZmlnID8gaGlnaGxpZ2h0Q29uZmlnLmdldCgpIDogbnVsbHB0cik7CisgICAgc2V0
U2VhcmNoaW5nRm9yTm9kZShlcnJvclN0cmluZywgZW5hYmxlZCwgaGlnaGxpZ2h0Q29uZmlnID8g
aGlnaGxpZ2h0Q29uZmlnIDogbnVsbHB0cik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6
OmhpZ2hsaWdodFJlY3QoRXJyb3JTdHJpbmcmLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50
IGhlaWdodCwgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBjb2xvciwgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mJiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VD
b29yZGluYXRlcykKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodFJlY3QoRXJyb3JT
dHJpbmcmLCBpbnQgeCwgaW50IHksIGludCB3aWR0aCwgaW50IGhlaWdodCwgY29uc3QgSW5zcGVj
dG9yT2JqZWN0KiBjb2xvciwgY29uc3QgSW5zcGVjdG9yT2JqZWN0KiBvdXRsaW5lQ29sb3IsIGNv
bnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykKIHsKICAgICBhdXRvIHF1YWQgPSBzdGQ6Om1h
a2VfdW5pcXVlPEZsb2F0UXVhZD4oRmxvYXRSZWN0KHgsIHksIHdpZHRoLCBoZWlnaHQpKTsKLSAg
ICBpbm5lckhpZ2hsaWdodFF1YWQoV1RGOjptb3ZlKHF1YWQpLCBjb2xvci5jb3B5UmVmKCksIG91
dGxpbmVDb2xvci5jb3B5UmVmKCksIHVzZVBhZ2VDb29yZGluYXRlcyk7CisgICAgaW5uZXJIaWdo
bGlnaHRRdWFkKFdURjo6bW92ZShxdWFkKSwgY29sb3IsIG91dGxpbmVDb2xvciwgdXNlUGFnZUNv
b3JkaW5hdGVzKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0UXVhZChF
cnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JBcnJheT4mJiBx
dWFkQXJyYXksIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgY29sb3IsIGNvbnN0IFJl
ZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdl
Q29vcmRpbmF0ZXMpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHRRdWFkKEVycm9y
U3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSW5zcGVjdG9yQXJyYXkmIHF1YWRBcnJheSwgY29u
c3QgSW5zcGVjdG9yT2JqZWN0KiBjb2xvciwgY29uc3QgSW5zcGVjdG9yT2JqZWN0KiBvdXRsaW5l
Q29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykKIHsKICAgICBhdXRvIHF1YWQg
PSBzdGQ6Om1ha2VfdW5pcXVlPEZsb2F0UXVhZD4oKTsKICAgICBpZiAoIXBhcnNlUXVhZChxdWFk
QXJyYXksIHF1YWQuZ2V0KCkpKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFs
KCJJbnZhbGlkIFF1YWQgZm9ybWF0Iik7CiAgICAgICAgIHJldHVybjsKICAgICB9Ci0gICAgaW5u
ZXJIaWdobGlnaHRRdWFkKFdURjo6bW92ZShxdWFkKSwgY29sb3IuY29weVJlZigpLCBvdXRsaW5l
Q29sb3IuY29weVJlZigpLCB1c2VQYWdlQ29vcmRpbmF0ZXMpOworICAgIGlubmVySGlnaGxpZ2h0
UXVhZChXVEY6Om1vdmUocXVhZCksIGNvbG9yLCBvdXRsaW5lQ29sb3IsIHVzZVBhZ2VDb29yZGlu
YXRlcyk7CiB9CiAKLXZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmlubmVySGlnaGxpZ2h0UXVhZChz
dGQ6OnVuaXF1ZV9wdHI8RmxvYXRRdWFkPiBxdWFkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYmIGNvbG9yLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIG91dGxpbmVDb2xv
ciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKQordm9pZCBJbnNwZWN0b3JET01BZ2Vu
dDo6aW5uZXJIaWdobGlnaHRRdWFkKHN0ZDo6dW5pcXVlX3B0cjxGbG9hdFF1YWQ+IHF1YWQsIGNv
bnN0IEluc3BlY3Rvck9iamVjdCogY29sb3IsIGNvbnN0IEluc3BlY3Rvck9iamVjdCogb3V0bGlu
ZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMpCiB7CiAgICAgYXV0byBoaWdo
bGlnaHRDb25maWcgPSBzdGQ6Om1ha2VfdW5pcXVlPEhpZ2hsaWdodENvbmZpZz4oKTsKLSAgICBo
aWdobGlnaHRDb25maWctPmNvbnRlbnQgPSBwYXJzZUNvbG9yKGNvbG9yLmNvcHlSZWYoKSk7Ci0g
ICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29sb3Iob3V0bGluZUNv
bG9yLmNvcHlSZWYoKSk7CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xv
cihjb2xvcik7CisgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50T3V0bGluZSA9IHBhcnNlQ29s
b3Iob3V0bGluZUNvbG9yKTsKICAgICBoaWdobGlnaHRDb25maWctPnVzZVBhZ2VDb29yZGluYXRl
cyA9IHVzZVBhZ2VDb29yZGluYXRlcyA/ICp1c2VQYWdlQ29vcmRpbmF0ZXMgOiBmYWxzZTsKICAg
ICBtX292ZXJsYXktPmhpZ2hsaWdodFF1YWQoV1RGOjptb3ZlKHF1YWQpLCAqaGlnaGxpZ2h0Q29u
ZmlnKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01BZ2VudDo6aGlnaGxpZ2h0Tm9kZShFcnJvclN0
cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgaGlnaGxp
Z2h0SW5zcGVjdG9yT2JqZWN0LCBjb25zdCBpbnQqIG5vZGVJZCwgY29uc3QgU3RyaW5nKiBvYmpl
Y3RJZCkKK3ZvaWQgSW5zcGVjdG9yRE9NQWdlbnQ6OmhpZ2hsaWdodE5vZGUoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIGhpZ2hsaWdodEluc3BlY3Rvck9i
amVjdCwgY29uc3QgaW50KiBub2RlSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0SWQpCiB7CiAgICAg
Tm9kZSogbm9kZSA9IDA7CiAgICAgaWYgKG5vZGVJZCkgewpAQCAtMTA5MSwyMSArMTA5MCwyMSBA
QCB2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdobGlnaHROb2RlKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgUmVmUHRyPElucwogICAgIGlmICghbm9kZSkKICAgICAgICAgcmV0dXJu
OwogCi0gICAgc3RkOjp1bmlxdWVfcHRyPEhpZ2hsaWdodENvbmZpZz4gaGlnaGxpZ2h0Q29uZmln
ID0gaGlnaGxpZ2h0Q29uZmlnRnJvbUluc3BlY3Rvck9iamVjdChlcnJvclN0cmluZywgaGlnaGxp
Z2h0SW5zcGVjdG9yT2JqZWN0LmdldCgpKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SGlnaGxpZ2h0
Q29uZmlnPiBoaWdobGlnaHRDb25maWcgPSBoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2Jq
ZWN0KGVycm9yU3RyaW5nLCAmaGlnaGxpZ2h0SW5zcGVjdG9yT2JqZWN0KTsKICAgICBpZiAoIWhp
Z2hsaWdodENvbmZpZykKICAgICAgICAgcmV0dXJuOwogCiAgICAgbV9vdmVybGF5LT5oaWdobGln
aHROb2RlKG5vZGUsICpoaWdobGlnaHRDb25maWcpOwogfQogCi12b2lkIEluc3BlY3RvckRPTUFn
ZW50OjpoaWdobGlnaHRGcmFtZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwg
Y29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvck9iamVjdD4mJiBvdXRsaW5lQ29sb3IpCit2b2lkIEluc3BlY3RvckRPTUFnZW50OjpoaWdo
bGlnaHRGcmFtZShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgZnJhbWVJZCwgY29uc3QgSW5z
cGVjdG9yT2JqZWN0KiBjb2xvciwgY29uc3QgSW5zcGVjdG9yT2JqZWN0KiBvdXRsaW5lQ29sb3Ip
CiB7CiAgICAgRnJhbWUqIGZyYW1lID0gbV9wYWdlQWdlbnQtPmZyYW1lRm9ySWQoZnJhbWVJZCk7
CiAgICAgaWYgKGZyYW1lICYmIGZyYW1lLT5vd25lckVsZW1lbnQoKSkgewogICAgICAgICBhdXRv
IGhpZ2hsaWdodENvbmZpZyA9IHN0ZDo6bWFrZV91bmlxdWU8SGlnaGxpZ2h0Q29uZmlnPigpOwog
ICAgICAgICBoaWdobGlnaHRDb25maWctPnNob3dJbmZvID0gdHJ1ZTsgLy8gQWx3YXlzIHNob3cg
dG9vbHRpcHMgZm9yIGZyYW1lcy4KLSAgICAgICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0g
cGFyc2VDb2xvcihjb2xvci5jb3B5UmVmKCkpOwotICAgICAgICBoaWdobGlnaHRDb25maWctPmNv
bnRlbnRPdXRsaW5lID0gcGFyc2VDb2xvcihvdXRsaW5lQ29sb3IuY29weVJlZigpKTsKKyAgICAg
ICAgaGlnaGxpZ2h0Q29uZmlnLT5jb250ZW50ID0gcGFyc2VDb2xvcihjb2xvcik7CisgICAgICAg
IGhpZ2hsaWdodENvbmZpZy0+Y29udGVudE91dGxpbmUgPSBwYXJzZUNvbG9yKG91dGxpbmVDb2xv
cik7CiAgICAgICAgIG1fb3ZlcmxheS0+aGlnaGxpZ2h0Tm9kZShmcmFtZS0+b3duZXJFbGVtZW50
KCksICpoaWdobGlnaHRDb25maWcpOwogICAgIH0KIH0KZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJD
b3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01BZ2VudC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvckRPTUFnZW50LmgKaW5kZXggOWZjOTUyNS4uZjRlMjk2MCAxMDA2NDQKLS0t
IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKKysrIGIvU291
cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckRPTUFnZW50LmgKQEAgLTEzMCwyMSArMTMw
LDIxIEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIHZvaWQgc2V0Tm9kZVZhbHVlKEVycm9yU3RyaW5n
JiwgaW50IG5vZGVJZCwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgb3ZlcnJpZGU7CiAgICAgdmlydHVh
bCB2b2lkIGdldEV2ZW50TGlzdGVuZXJzRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQs
IGNvbnN0IFdURjo6U3RyaW5nKiBvYmplY3RHcm91cCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9j
b2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkRPTTo6RXZlbnRMaXN0ZW5lcj4+JiBsaXN0
ZW5lcnNBcnJheSkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGdldEFjY2Vzc2liaWxpdHlQ
cm9wZXJ0aWVzRm9yTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIFJlZlB0cjxJbnNwZWN0
b3I6OlByb3RvY29sOjpET006OkFjY2Vzc2liaWxpdHlQcm9wZXJ0aWVzPiYgYXhQcm9wZXJ0aWVz
KSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcGVyZm9ybVNlYXJjaChFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYgd2hpdGVzcGFjZVRyaW1tZWRRdWVyeSwgY29uc3QgUmVmUHRyPEluc3Bl
Y3Rvcjo6SW5zcGVjdG9yQXJyYXk+JiYgbm9kZUlkcywgU3RyaW5nKiBzZWFyY2hJZCwgaW50KiBy
ZXN1bHRDb3VudCkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHBlcmZvcm1TZWFyY2goRXJy
b3JTdHJpbmcmLCBjb25zdCBTdHJpbmcmIHdoaXRlc3BhY2VUcmltbWVkUXVlcnksIGNvbnN0IElu
c3BlY3Rvcjo6SW5zcGVjdG9yQXJyYXkqIG5vZGVJZHMsIFN0cmluZyogc2VhcmNoSWQsIGludCog
cmVzdWx0Q291bnQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBnZXRTZWFyY2hSZXN1bHRz
KEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzZWFyY2hJZCwgaW50IGZyb21JbmRleCwgaW50
IHRvSW5kZXgsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxpbnQ+PiYpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBkaXNjYXJkU2VhcmNoUmVzdWx0cyhFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYgc2VhcmNoSWQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZXNv
bHZlTm9kZShFcnJvclN0cmluZyYsIGludCBub2RlSWQsIGNvbnN0IFN0cmluZyogb2JqZWN0R3Jv
dXAsIFJlZlB0cjxJbnNwZWN0b3I6OlByb3RvY29sOjpSdW50aW1lOjpSZW1vdGVPYmplY3Q+JiBy
ZXN1bHQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCBnZXRBdHRyaWJ1dGVzKEVycm9yU3Ry
aW5nJiwgaW50IG5vZGVJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmlu
Zz4+JiByZXN1bHQpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwgdm9pZCBzZXRJbnNwZWN0TW9kZUVu
YWJsZWQoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJsZWQsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6
Okluc3BlY3Rvck9iamVjdD4mJiBoaWdobGlnaHRDb25maWcpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBzZXRJbnNwZWN0TW9kZUVuYWJsZWQoRXJyb3JTdHJpbmcmLCBib29sIGVuYWJsZWQs
IGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBoaWdobGlnaHRDb25maWcpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCByZXF1ZXN0Tm9kZShFcnJvclN0cmluZyYsIGNvbnN0IFN0
cmluZyYgb2JqZWN0SWQsIGludCogbm9kZUlkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQg
cHVzaE5vZGVCeVBhdGhUb0Zyb250ZW5kKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBwYXRo
LCBpbnQqIG5vZGVJZCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHB1c2hOb2RlQnlCYWNr
ZW5kSWRUb0Zyb250ZW5kKEVycm9yU3RyaW5nJiwgQmFja2VuZE5vZGVJZCwgaW50KiBub2RlSWQp
IG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9pZCByZWxlYXNlQmFja2VuZE5vZGVJZHMoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIG5vZGVHcm91cCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIGhpZGVIaWdobGlnaHQoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZv
aWQgaGlnaGxpZ2h0UmVjdChFcnJvclN0cmluZyYsIGludCB4LCBpbnQgeSwgaW50IHdpZHRoLCBp
bnQgaGVpZ2h0LCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgY29s
b3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBvdXRsaW5lQ29s
b3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykgb3ZlcnJpZGU7Ci0gICAgdmlydHVh
bCB2b2lkIGhpZ2hsaWdodFF1YWQoRXJyb3JTdHJpbmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9y
OjpJbnNwZWN0b3JBcnJheT4mJiBxdWFkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0
b3JPYmplY3Q+JiYgY29sb3IsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVj
dD4mJiBvdXRsaW5lQ29sb3IsIGNvbnN0IGJvb2wqIHVzZVBhZ2VDb29yZGluYXRlcykgb3ZlcnJp
ZGU7Ci0gICAgdmlydHVhbCB2b2lkIGhpZ2hsaWdodE5vZGUoRXJyb3JTdHJpbmcmLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgaGlnaGxpZ2h0Q29uZmlnLCBjb25z
dCBpbnQqIG5vZGVJZCwgY29uc3QgU3RyaW5nKiBvYmplY3RJZCkgb3ZlcnJpZGU7Ci0gICAgdmly
dHVhbCB2b2lkIGhpZ2hsaWdodEZyYW1lKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBmcmFt
ZUlkLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3Q+JiYgY29sb3IsIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBvdXRsaW5lQ29sb3IpIG92
ZXJyaWRlOworICAgIHZpcnR1YWwgdm9pZCBoaWdobGlnaHRSZWN0KEVycm9yU3RyaW5nJiwgaW50
IHgsIGludCB5LCBpbnQgd2lkdGgsIGludCBoZWlnaHQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVj
dG9yT2JqZWN0KiBjb2xvciwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG91dGxp
bmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKSBvdmVycmlkZTsKKyAgICB2
aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0UXVhZChFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6
SW5zcGVjdG9yQXJyYXkmIHF1YWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0KiBj
b2xvciwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG91dGxpbmVDb2xvciwgY29u
c3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQg
aGlnaGxpZ2h0Tm9kZShFcnJvclN0cmluZyYsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0JiBoaWdobGlnaHRDb25maWcsIGNvbnN0IGludCogbm9kZUlkLCBjb25zdCBTdHJpbmcqIG9i
amVjdElkKSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgaGlnaGxpZ2h0RnJhbWUoRXJyb3JT
dHJpbmcmLCBjb25zdCBTdHJpbmcmIGZyYW1lSWQsIGNvbnN0IEluc3BlY3Rvcjo6SW5zcGVjdG9y
T2JqZWN0KiBjb2xvciwgY29uc3QgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIG91dGxpbmVD
b2xvcikgb3ZlcnJpZGU7CiAKICAgICB2aXJ0dWFsIHZvaWQgbW92ZVRvKEVycm9yU3RyaW5nJiwg
aW50IG5vZGVJZCwgaW50IHRhcmdldE5vZGVJZCwgY29uc3QgaW50KiBhbmNob3JOb2RlSWQsIGlu
dCogbmV3Tm9kZUlkKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgdW5kbyhFcnJvclN0cmlu
ZyYpIG92ZXJyaWRlOwpAQCAtMjEyLDggKzIxMiw4IEBAIHB1YmxpYzoKICAgICBJbnNwZWN0b3JQ
YWdlQWdlbnQqIHBhZ2VBZ2VudCgpIHsgcmV0dXJuIG1fcGFnZUFnZW50OyB9CiAKIHByaXZhdGU6
Ci0gICAgdm9pZCBzZXRTZWFyY2hpbmdGb3JOb2RlKEVycm9yU3RyaW5nJiwgYm9vbCBlbmFibGVk
LCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogaGlnaGxpZ2h0Q29uZmlnKTsKLSAgICBzdGQ6
OnVuaXF1ZV9wdHI8SGlnaGxpZ2h0Q29uZmlnPiBoaWdobGlnaHRDb25maWdGcm9tSW5zcGVjdG9y
T2JqZWN0KEVycm9yU3RyaW5nJiwgSW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdo
dEluc3BlY3Rvck9iamVjdCk7CisgICAgdm9pZCBzZXRTZWFyY2hpbmdGb3JOb2RlKEVycm9yU3Ry
aW5nJiwgYm9vbCBlbmFibGVkLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCogaGln
aGxpZ2h0Q29uZmlnKTsKKyAgICBzdGQ6OnVuaXF1ZV9wdHI8SGlnaGxpZ2h0Q29uZmlnPiBoaWdo
bGlnaHRDb25maWdGcm9tSW5zcGVjdG9yT2JqZWN0KEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVj
dG9yOjpJbnNwZWN0b3JPYmplY3QqIGhpZ2hsaWdodEluc3BlY3Rvck9iamVjdCk7CiAKICAgICAv
LyBOb2RlLXJlbGF0ZWQgbWV0aG9kcy4KICAgICB0eXBlZGVmIEhhc2hNYXA8UmVmUHRyPE5vZGU+
LCBpbnQ+IE5vZGVUb0lkTWFwOwpAQCAtMjQxLDcgKzI0MSw3IEBAIHByaXZhdGU6CiAKICAgICB2
b2lkIGRpc2NhcmRCaW5kaW5ncygpOwogCi0gICAgdm9pZCBpbm5lckhpZ2hsaWdodFF1YWQoc3Rk
Ojp1bmlxdWVfcHRyPEZsb2F0UXVhZD4sIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4mJiBjb2xvciwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0
PiYmIG91dGxpbmVDb2xvciwgY29uc3QgYm9vbCogdXNlUGFnZUNvb3JkaW5hdGVzKTsKKyAgICB2
b2lkIGlubmVySGlnaGxpZ2h0UXVhZChzdGQ6OnVuaXF1ZV9wdHI8RmxvYXRRdWFkPiwgY29uc3Qg
SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmplY3QqIGNvbG9yLCBjb25zdCBJbnNwZWN0b3I6Okluc3Bl
Y3Rvck9iamVjdCogb3V0bGluZUNvbG9yLCBjb25zdCBib29sKiB1c2VQYWdlQ29vcmRpbmF0ZXMp
OwogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBJbnNwZWN0b3I6
OkluamVjdGVkU2NyaXB0TWFuYWdlciogbV9pbmplY3RlZFNjcmlwdE1hbmFnZXI7CmRpZmYgLS1n
aXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNw
cCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuY3Bw
CmluZGV4IDQ4ZGQzZDUuLmIxNjg3Y2Y1IDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcAorKysgYi9Tb3VyY2UvV2ViQ29yZS9p
bnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50LmNwcApAQCAtOTIsMTAgKzkyLDEwIEBA
IHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpkaXNhYmxlKEVycm9yU3RyaW5nJikKICAg
ICBtX2VuYWJsZWQgPSBmYWxzZTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6
OmdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IFJlZlB0
cjxJbnNwZWN0b3JPYmplY3Q+JiYgc3RvcmFnZUlkLCBSZWZQdHI8SW5zcGVjdG9yOjpQcm90b2Nv
bDo6QXJyYXk8SW5zcGVjdG9yOjpQcm90b2NvbDo6QXJyYXk8U3RyaW5nPj4+JiBpdGVtcykKK3Zv
aWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01TdG9yYWdlSXRlbXMoRXJyb3JTdHJp
bmcmIGVycm9yU3RyaW5nLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIHN0b3JhZ2VJZCwgUmVmUHRy
PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0
cmluZz4+PiYgaXRlbXMpCiB7CiAgICAgRnJhbWUqIGZyYW1lOwotICAgIFJlZlB0cjxTdG9yYWdl
QXJlYT4gc3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoZXJyb3JTdHJpbmcsIHN0b3JhZ2VJ
ZC5jb3B5UmVmKCksIGZyYW1lKTsKKyAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVh
ID0gZmluZFN0b3JhZ2VBcmVhKGVycm9yU3RyaW5nLCBzdG9yYWdlSWQsIGZyYW1lKTsKICAgICBp
ZiAoIXN0b3JhZ2VBcmVhKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJO
byBTdG9yYWdlQXJlYSBmb3IgZ2l2ZW4gc3RvcmFnZUlkIik7CiAgICAgICAgIHJldHVybjsKQEAg
LTExNiwxMCArMTE2LDEwIEBAIHZvaWQgSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpnZXRET01T
dG9yYWdlSXRlbXMoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zCiAgICAgaXRlbXMgPSBX
VEY6Om1vdmUoc3RvcmFnZUl0ZW1zKTsKIH0KIAotdm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdl
bnQ6OnNldERPTVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgUmVm
UHRyPEluc3BlY3Rvck9iamVjdD4mJiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25z
dCBTdHJpbmcmIHZhbHVlKQordm9pZCBJbnNwZWN0b3JET01TdG9yYWdlQWdlbnQ6OnNldERPTVN0
b3JhZ2VJdGVtKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3QgSW5zcGVjdG9yT2JqZWN0
JiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5LCBjb25zdCBTdHJpbmcmIHZhbHVlKQogewog
ICAgIEZyYW1lKiBmcmFtZTsKLSAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVhID0g
ZmluZFN0b3JhZ2VBcmVhKGVycm9yU3RyaW5nLCBzdG9yYWdlSWQuY29weVJlZigpLCBmcmFtZSk7
CisgICAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBzdG9yYWdlQXJlYSA9IGZpbmRTdG9yYWdlQXJlYShl
cnJvclN0cmluZywgc3RvcmFnZUlkLCBmcmFtZSk7CiAgICAgaWYgKCFzdG9yYWdlQXJlYSkgewog
ICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiU3RvcmFnZSBub3QgZm91bmQiKTsK
ICAgICAgICAgcmV0dXJuOwpAQCAtMTMxLDEwICsxMzEsMTAgQEAgdm9pZCBJbnNwZWN0b3JET01T
dG9yYWdlQWdlbnQ6OnNldERPTVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywg
Y29uc3QKICAgICAgICAgZXJyb3JTdHJpbmcgPSBFeGNlcHRpb25Db2RlRGVzY3JpcHRpb24oUVVP
VEFfRVhDRUVERURfRVJSKS5uYW1lOwogfQogCi12b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2Vu
dDo6cmVtb3ZlRE9NU3RvcmFnZUl0ZW0oRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBS
ZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiYmIHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXkpCit2
b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6cmVtb3ZlRE9NU3RvcmFnZUl0ZW0oRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIHN0b3JhZ2VJZCwgY29u
c3QgU3RyaW5nJiBrZXkpCiB7CiAgICAgRnJhbWUqIGZyYW1lOwotICAgIFJlZlB0cjxTdG9yYWdl
QXJlYT4gc3RvcmFnZUFyZWEgPSBmaW5kU3RvcmFnZUFyZWEoZXJyb3JTdHJpbmcsIHN0b3JhZ2VJ
ZC5jb3B5UmVmKCksIGZyYW1lKTsKKyAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IHN0b3JhZ2VBcmVh
ID0gZmluZFN0b3JhZ2VBcmVhKGVycm9yU3RyaW5nLCBzdG9yYWdlSWQsIGZyYW1lKTsKICAgICBp
ZiAoIXN0b3JhZ2VBcmVhKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gQVNDSUlMaXRlcmFsKCJT
dG9yYWdlIG5vdCBmb3VuZCIpOwogICAgICAgICByZXR1cm47CkBAIC0xODAsMTMgKzE4MCwxMyBA
QCB2b2lkIEluc3BlY3RvckRPTVN0b3JhZ2VBZ2VudDo6ZGlkRGlzcGF0Y2hET01TdG9yYWdlRXZl
bnQoY29uc3QgU3RyaW5nJiBrZXksIGNvbgogICAgICAgICBtX2Zyb250ZW5kRGlzcGF0Y2hlci0+
ZG9tU3RvcmFnZUl0ZW1VcGRhdGVkKGlkLCBrZXksIG9sZFZhbHVlLCBuZXdWYWx1ZSk7CiB9CiAK
LVJlZlB0cjxTdG9yYWdlQXJlYT4gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpmaW5kU3RvcmFn
ZUFyZWEoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yT2Jq
ZWN0PiYmIHN0b3JhZ2VJZCwgRnJhbWUqJiB0YXJnZXRGcmFtZSkKK1JlZlB0cjxTdG9yYWdlQXJl
YT4gSW5zcGVjdG9yRE9NU3RvcmFnZUFnZW50OjpmaW5kU3RvcmFnZUFyZWEoRXJyb3JTdHJpbmcm
IGVycm9yU3RyaW5nLCBjb25zdCBJbnNwZWN0b3JPYmplY3QmIHN0b3JhZ2VJZCwgRnJhbWUqJiB0
YXJnZXRGcmFtZSkKIHsKICAgICBTdHJpbmcgc2VjdXJpdHlPcmlnaW47CiAgICAgYm9vbCBpc0xv
Y2FsU3RvcmFnZSA9IGZhbHNlOwotICAgIGJvb2wgc3VjY2VzcyA9IHN0b3JhZ2VJZC0+Z2V0U3Ry
aW5nKEFTQ0lJTGl0ZXJhbCgic2VjdXJpdHlPcmlnaW4iKSwgc2VjdXJpdHlPcmlnaW4pOworICAg
IGJvb2wgc3VjY2VzcyA9IHN0b3JhZ2VJZC5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzZWN1cml0
eU9yaWdpbiIpLCBzZWN1cml0eU9yaWdpbik7CiAgICAgaWYgKHN1Y2Nlc3MpCi0gICAgICAgIHN1
Y2Nlc3MgPSBzdG9yYWdlSWQtPmdldEJvb2xlYW4oQVNDSUlMaXRlcmFsKCJpc0xvY2FsU3RvcmFn
ZSIpLCBpc0xvY2FsU3RvcmFnZSk7CisgICAgICAgIHN1Y2Nlc3MgPSBzdG9yYWdlSWQuZ2V0Qm9v
bGVhbihBU0NJSUxpdGVyYWwoImlzTG9jYWxTdG9yYWdlIiksIGlzTG9jYWxTdG9yYWdlKTsKICAg
ICBpZiAoIXN1Y2Nlc3MpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVyYWwoIklu
dmFsaWQgc3RvcmFnZUlkIGZvcm1hdCIpOwogICAgICAgICB0YXJnZXRGcmFtZSA9IG51bGxwdHI7
CmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFn
ZUFnZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yRE9NU3RvcmFnZUFn
ZW50LmgKaW5kZXggYmViZDFlZi4uNTBhMWRkMiAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUv
aW5zcGVjdG9yL0luc3BlY3RvckRPTVN0b3JhZ2VBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3Jl
L2luc3BlY3Rvci9JbnNwZWN0b3JET01TdG9yYWdlQWdlbnQuaApAQCAtNjMsOSArNjMsOSBAQCBw
dWJsaWM6CiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGZyb250LWVuZC4KICAgICB2aXJ0dWFsIHZv
aWQgZW5hYmxlKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2Fi
bGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgZ2V0RE9NU3RvcmFn
ZUl0ZW1zKEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2Jq
ZWN0PiYmIHN0b3JhZ2VJZCwgUmVmUHRyPEluc3BlY3Rvcjo6UHJvdG9jb2w6OkFycmF5PEluc3Bl
Y3Rvcjo6UHJvdG9jb2w6OkFycmF5PFN0cmluZz4+PiYgaXRlbXMpIG92ZXJyaWRlOwotICAgIHZp
cnR1YWwgdm9pZCBzZXRET01TdG9yYWdlSXRlbShFcnJvclN0cmluZyYsIGNvbnN0IFJlZlB0cjxJ
bnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJiBzdG9yYWdlSWQsIGNvbnN0IFN0cmluZyYga2V5
LCBjb25zdCBTdHJpbmcmIHZhbHVlKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgcmVtb3Zl
RE9NU3RvcmFnZUl0ZW0oRXJyb3JTdHJpbmcmLCBjb25zdCBSZWZQdHI8SW5zcGVjdG9yOjpJbnNw
ZWN0b3JPYmplY3Q+JiYgc3RvcmFnZUlkLCBjb25zdCBTdHJpbmcmIGtleSkgb3ZlcnJpZGU7Cisg
ICAgdmlydHVhbCB2b2lkIGdldERPTVN0b3JhZ2VJdGVtcyhFcnJvclN0cmluZyYsIGNvbnN0IElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBzdG9yYWdlSWQsIFJlZlB0cjxJbnNwZWN0b3I6OlBy
b3RvY29sOjpBcnJheTxJbnNwZWN0b3I6OlByb3RvY29sOjpBcnJheTxTdHJpbmc+Pj4mIGl0ZW1z
KSBvdmVycmlkZTsKKyAgICB2aXJ0dWFsIHZvaWQgc2V0RE9NU3RvcmFnZUl0ZW0oRXJyb3JTdHJp
bmcmLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgc3RvcmFnZUlkLCBjb25zdCBT
dHJpbmcmIGtleSwgY29uc3QgU3RyaW5nJiB2YWx1ZSkgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2
b2lkIHJlbW92ZURPTVN0b3JhZ2VJdGVtKEVycm9yU3RyaW5nJiwgY29uc3QgSW5zcGVjdG9yOjpJ
bnNwZWN0b3JPYmplY3QmIHN0b3JhZ2VJZCwgY29uc3QgU3RyaW5nJiBrZXkpIG92ZXJyaWRlOwog
CiAgICAgLy8gQ2FsbGVkIGZyb20gdGhlIGluamVjdGVkIHNjcmlwdC4KICAgICBTdHJpbmcgc3Rv
cmFnZUlkKFN0b3JhZ2UqKTsKQEAgLTc1LDcgKzc1LDcgQEAgcHVibGljOgogICAgIHZvaWQgZGlk
RGlzcGF0Y2hET01TdG9yYWdlRXZlbnQoY29uc3QgU3RyaW5nJiBrZXksIGNvbnN0IFN0cmluZyYg
b2xkVmFsdWUsIGNvbnN0IFN0cmluZyYgbmV3VmFsdWUsIFN0b3JhZ2VUeXBlLCBTZWN1cml0eU9y
aWdpbiosIFBhZ2UqKTsKIAogcHJpdmF0ZToKLSAgICBSZWZQdHI8U3RvcmFnZUFyZWE+IGZpbmRT
dG9yYWdlQXJlYShFcnJvclN0cmluZyYsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rv
ck9iamVjdD4mJiwgRnJhbWUqJik7CisgICAgUmVmUHRyPFN0b3JhZ2VBcmVhPiBmaW5kU3RvcmFn
ZUFyZWEoRXJyb3JTdHJpbmcmLCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYsIEZy
YW1lKiYpOwogCiAgICAgSW5zcGVjdG9yUGFnZUFnZW50KiBtX3BhZ2VBZ2VudDsKICAgICBzdGQ6
OnVuaXF1ZV9wdHI8SW5zcGVjdG9yOjpET01TdG9yYWdlRnJvbnRlbmREaXNwYXRjaGVyPiBtX2Zy
b250ZW5kRGlzcGF0Y2hlcjsKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9ySW5kZXhlZERCQWdlbnQuY3BwCmluZGV4IDgzMWYzYjIuLjliZjEyOTEgMTAwNjQ0Ci0t
LSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JJbmRleGVkREJBZ2VudC5jcHAK
KysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFnZW50LmNw
cApAQCAtMzc4LDcgKzM3OCw3IEBAIHN0YXRpYyBSZWZQdHI8SURCS2V5PiBpZGJLZXlGcm9tSW5z
cGVjdG9yT2JqZWN0KEluc3BlY3Rvck9iamVjdCoga2V5KQogICAgIHJldHVybiBpZGJLZXkucmVs
ZWFzZSgpOwogfQogCi1zdGF0aWMgUmVmUHRyPElEQktleVJhbmdlPiBpZGJLZXlSYW5nZUZyb21L
ZXlSYW5nZShJbnNwZWN0b3JPYmplY3QqIGtleVJhbmdlKQorc3RhdGljIFJlZlB0cjxJREJLZXlS
YW5nZT4gaWRiS2V5UmFuZ2VGcm9tS2V5UmFuZ2UoY29uc3QgSW5zcGVjdG9yT2JqZWN0KiBrZXlS
YW5nZSkKIHsKICAgICBSZWZQdHI8SW5zcGVjdG9yT2JqZWN0PiBsb3dlcjsKICAgICBpZiAoIWtl
eVJhbmdlLT5nZXRPYmplY3QoImxvd2VyIiwgbG93ZXIpKQpAQCAtNjU1LDcgKzY1NSw3IEBAIHZv
aWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhYmFzZShFcnJvclN0cmluZyYg
ZXJyb3JTdHJpbmcsIGNvbnN0IFN0CiAgICAgZGF0YWJhc2VMb2FkZXItPnN0YXJ0KGlkYkZhY3Rv
cnksIGRvY3VtZW50LT5zZWN1cml0eU9yaWdpbigpLCBkYXRhYmFzZU5hbWUpOwogfQogCi12b2lk
IEluc3BlY3RvckluZGV4ZWREQkFnZW50OjpyZXF1ZXN0RGF0YShFcnJvclN0cmluZyYgZXJyb3JT
dHJpbmcsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJh
c2VOYW1lLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3JlTmFtZSwgY29uc3QgU3RyaW5nJiBpbmRl
eE5hbWUsIGludCBza2lwQ291bnQsIGludCBwYWdlU2l6ZSwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
ck9iamVjdD4mJiBrZXlSYW5nZSwgUmVmPFJlcXVlc3REYXRhQ2FsbGJhY2s+JiYgcmVxdWVzdENh
bGxiYWNrKQordm9pZCBJbnNwZWN0b3JJbmRleGVkREJBZ2VudDo6cmVxdWVzdERhdGEoRXJyb3JT
dHJpbmcmIGVycm9yU3RyaW5nLCBjb25zdCBTdHJpbmcmIHNlY3VyaXR5T3JpZ2luLCBjb25zdCBT
dHJpbmcmIGRhdGFiYXNlTmFtZSwgY29uc3QgU3RyaW5nJiBvYmplY3RTdG9yZU5hbWUsIGNvbnN0
IFN0cmluZyYgaW5kZXhOYW1lLCBpbnQgc2tpcENvdW50LCBpbnQgcGFnZVNpemUsIGNvbnN0IElu
c3BlY3Rvck9iamVjdCoga2V5UmFuZ2UsIFJlZjxSZXF1ZXN0RGF0YUNhbGxiYWNrPiYmIHJlcXVl
c3RDYWxsYmFjaykKIHsKICAgICBGcmFtZSogZnJhbWUgPSBtX3BhZ2VBZ2VudC0+ZmluZEZyYW1l
V2l0aFNlY3VyaXR5T3JpZ2luKHNlY3VyaXR5T3JpZ2luKTsKICAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSBhc3NlcnREb2N1bWVudChlcnJvclN0cmluZywgZnJhbWUpOwpAQCAtNjY4LDcgKzY2OCw3
IEBAIHZvaWQgSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQ6OnJlcXVlc3REYXRhKEVycm9yU3RyaW5n
JiBlcnJvclN0cmluZywgY29uc3QgU3RyaW5nCiAKICAgICBJbmplY3RlZFNjcmlwdCBpbmplY3Rl
ZFNjcmlwdCA9IG1faW5qZWN0ZWRTY3JpcHRNYW5hZ2VyLT5pbmplY3RlZFNjcmlwdEZvcihtYWlu
V29ybGRFeGVjU3RhdGUoZnJhbWUpKTsKIAotICAgIFJlZlB0cjxJREJLZXlSYW5nZT4gaWRiS2V5
UmFuZ2UgPSBrZXlSYW5nZSA/IGlkYktleVJhbmdlRnJvbUtleVJhbmdlKGtleVJhbmdlLmdldCgp
KSA6IG51bGxwdHI7CisgICAgUmVmUHRyPElEQktleVJhbmdlPiBpZGJLZXlSYW5nZSA9IGtleVJh
bmdlID8gaWRiS2V5UmFuZ2VGcm9tS2V5UmFuZ2Uoa2V5UmFuZ2UpIDogbnVsbHB0cjsKICAgICBp
ZiAoa2V5UmFuZ2UgJiYgIWlkYktleVJhbmdlKSB7CiAgICAgICAgIGVycm9yU3RyaW5nID0gQVND
SUlMaXRlcmFsKCJDYW4gbm90IHBhcnNlIGtleSByYW5nZS4iKTsKICAgICAgICAgcmV0dXJuOwpk
aWZmIC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvckluZGV4ZWREQkFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQu
aAppbmRleCA1OTIxMjUyLi4xMTA3MjhhIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9ySW5kZXhlZERCQWdlbnQuaApAQCAtNjEsNyArNjEsNyBAQCBwdWJsaWM6
CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKICAgICB2
aXJ0dWFsIHZvaWQgcmVxdWVzdERhdGFiYXNlTmFtZXMoRXJyb3JTdHJpbmcmLCBjb25zdCBTdHJp
bmcmIHNlY3VyaXR5T3JpZ2luLCBSZWY8UmVxdWVzdERhdGFiYXNlTmFtZXNDYWxsYmFjaz4mJikg
b3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlcXVlc3REYXRhYmFzZShFcnJvclN0cmluZyYs
IGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1l
LCBSZWY8UmVxdWVzdERhdGFiYXNlQ2FsbGJhY2s+JiYpIG92ZXJyaWRlOwotICAgIHZpcnR1YWwg
dm9pZCByZXF1ZXN0RGF0YShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgc2VjdXJpdHlPcmln
aW4sIGNvbnN0IFN0cmluZyYgZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIG9iamVjdFN0b3Jl
TmFtZSwgY29uc3QgU3RyaW5nJiBpbmRleE5hbWUsIGludCBza2lwQ291bnQsIGludCBwYWdlU2l6
ZSwgY29uc3QgUmVmUHRyPEluc3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIGtleVJhbmdlLCBS
ZWY8UmVxdWVzdERhdGFDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHJl
cXVlc3REYXRhKEVycm9yU3RyaW5nJiwgY29uc3QgU3RyaW5nJiBzZWN1cml0eU9yaWdpbiwgY29u
c3QgU3RyaW5nJiBkYXRhYmFzZU5hbWUsIGNvbnN0IFN0cmluZyYgb2JqZWN0U3RvcmVOYW1lLCBj
b25zdCBTdHJpbmcmIGluZGV4TmFtZSwgaW50IHNraXBDb3VudCwgaW50IHBhZ2VTaXplLCBjb25z
dCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCoga2V5UmFuZ2UsIFJlZjxSZXF1ZXN0RGF0YUNh
bGxiYWNrPiYmKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJPYmplY3RTdG9yZShF
cnJvclN0cmluZyYsIGNvbnN0IFN0cmluZyYgaW5fc2VjdXJpdHlPcmlnaW4sIGNvbnN0IFN0cmlu
ZyYgaW5fZGF0YWJhc2VOYW1lLCBjb25zdCBTdHJpbmcmIGluX29iamVjdFN0b3JlTmFtZSwgUmVm
PENsZWFyT2JqZWN0U3RvcmVDYWxsYmFjaz4mJikgb3ZlcnJpZGU7CiAKIHByaXZhdGU6CmRpZmYg
LS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuY3Bw
IGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50LmNwcAppbmRl
eCA1Y2FlNjAxLi42NGNiODExIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3Iv
SW5zcGVjdG9yUmVwbGF5QWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JSZXBsYXlBZ2VudC5jcHAKQEAgLTMyOSwxNSArMzI5LDE1IEBAIHZvaWQgSW5zcGVj
dG9yUmVwbGF5QWdlbnQ6OnN0b3BDYXB0dXJpbmcoRXJyb3JTdHJpbmcmIGVycm9yU3RyaW5nKQog
ICAgIG1fcGFnZS5yZXBsYXlDb250cm9sbGVyKCkuc3RvcENhcHR1cmluZygpOwogfQogCi12b2lk
IEluc3BlY3RvclJlcGxheUFnZW50OjpyZXBsYXlUb1Bvc2l0aW9uKEVycm9yU3RyaW5nJiBlcnJv
clN0cmluZywgY29uc3QgUmVmUHRyPEluc3BlY3Rvck9iamVjdD4mJiBwb3NpdGlvbk9iamVjdCwg
Ym9vbCBmYXN0UmVwbGF5KQordm9pZCBJbnNwZWN0b3JSZXBsYXlBZ2VudDo6cmVwbGF5VG9Qb3Np
dGlvbihFcnJvclN0cmluZyYgZXJyb3JTdHJpbmcsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgcG9z
aXRpb25PYmplY3QsIGJvb2wgZmFzdFJlcGxheSkKIHsKICAgICBSZXBsYXlQb3NpdGlvbiBwb3Np
dGlvbjsKLSAgICBpZiAoIXBvc2l0aW9uT2JqZWN0LT5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgi
c2VnbWVudE9mZnNldCIpLCBwb3NpdGlvbi5zZWdtZW50T2Zmc2V0KSkgeworICAgIGlmICghcG9z
aXRpb25PYmplY3QuZ2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoInNlZ21lbnRPZmZzZXQiKSwgcG9z
aXRpb24uc2VnbWVudE9mZnNldCkpIHsKICAgICAgICAgZXJyb3JTdHJpbmcgPSBBU0NJSUxpdGVy
YWwoIkNvdWxkbid0IGRlY29kZSBSZXBsYXlQb3NpdGlvbiBzZWdtZW50IG9mZnNldCBwcm92aWRl
ZCB0byBSZXBsYXlBZ2VudC5yZXBsYXlUb1Bvc2l0aW9uLiIpOwogICAgICAgICByZXR1cm47CiAg
ICAgfQogCi0gICAgaWYgKCFwb3NpdGlvbk9iamVjdC0+Z2V0SW50ZWdlcihBU0NJSUxpdGVyYWwo
ImlucHV0T2Zmc2V0IiksIHBvc2l0aW9uLmlucHV0T2Zmc2V0KSkgeworICAgIGlmICghcG9zaXRp
b25PYmplY3QuZ2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoImlucHV0T2Zmc2V0IiksIHBvc2l0aW9u
LmlucHV0T2Zmc2V0KSkgewogICAgICAgICBlcnJvclN0cmluZyA9IEFTQ0lJTGl0ZXJhbCgiQ291
bGRuJ3QgZGVjb2RlIFJlcGxheVBvc2l0aW9uIGlucHV0IG9mZnNldCBwcm92aWRlZCB0byBSZXBs
YXlBZ2VudC5yZXBsYXlUb1Bvc2l0aW9uLiIpOwogICAgICAgICByZXR1cm47CiAgICAgfQpkaWZm
IC0tZ2l0IGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvclJlcGxheUFnZW50Lmgg
Yi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVwbGF5QWdlbnQuaAppbmRleCAw
Yjk0ZTEwLi4zYzJiYzdjIDEwMDY0NAotLS0gYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5z
cGVjdG9yUmVwbGF5QWdlbnQuaAorKysgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVj
dG9yUmVwbGF5QWdlbnQuaApAQCAtOTYsNyArOTYsNyBAQCBwdWJsaWM6CiAgICAgdmlydHVhbCB2
b2lkIHN0YXJ0Q2FwdHVyaW5nKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2
b2lkIHN0b3BDYXB0dXJpbmcoRXJyb3JTdHJpbmcmKSBvdmVycmlkZTsKIAotICAgIHZpcnR1YWwg
dm9pZCByZXBsYXlUb1Bvc2l0aW9uKEVycm9yU3RyaW5nJiwgY29uc3QgUmVmUHRyPEluc3BlY3Rv
cjo6SW5zcGVjdG9yT2JqZWN0PiYmLCBib29sIHNob3VsZEZhc3RGb3J3YXJkKSBvdmVycmlkZTsK
KyAgICB2aXJ0dWFsIHZvaWQgcmVwbGF5VG9Qb3NpdGlvbihFcnJvclN0cmluZyYsIGNvbnN0IElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0JiBwb3NpdGlvbiwgYm9vbCBzaG91bGRGYXN0Rm9yd2Fy
ZCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIHJlcGxheVRvQ29tcGxldGlvbihFcnJvclN0
cmluZyYsIGJvb2wgc2hvdWxkRmFzdEZvcndhcmQpIG92ZXJyaWRlOwogICAgIHZpcnR1YWwgdm9p
ZCBwYXVzZVBsYXliYWNrKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lk
IGNhbmNlbFBsYXliYWNrKEVycm9yU3RyaW5nJikgb3ZlcnJpZGU7CmRpZmYgLS1naXQgYS9Tb3Vy
Y2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAgYi9Tb3VyY2Uv
V2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5jcHAKaW5kZXggMjZhYzI5
Yi4uODU0NDg5YyAxMDA2NDQKLS0tIGEvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3Rv
clJlc291cmNlQWdlbnQuY3BwCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0
b3JSZXNvdXJjZUFnZW50LmNwcApAQCAtMjk5LDE0ICsyOTksOCBAQCB2b2lkIEluc3BlY3RvclJl
c291cmNlQWdlbnQ6OndpbGxTZW5kUmVxdWVzdCh1bnNpZ25lZCBsb25nIGlkZW50aWZpZXIsIERv
Y3VtZW50TAogCiAgICAgbV9yZXNvdXJjZXNEYXRhLT5zZXRSZXNvdXJjZVR5cGUocmVxdWVzdElk
LCB0eXBlKTsKIAotICAgIGlmIChtX2V4dHJhUmVxdWVzdEhlYWRlcnMpIHsKLSAgICAgICAgSW5z
cGVjdG9yT2JqZWN0Ojpjb25zdF9pdGVyYXRvciBlbmQgPSBtX2V4dHJhUmVxdWVzdEhlYWRlcnMt
PmVuZCgpOwotICAgICAgICBmb3IgKEluc3BlY3Rvck9iamVjdDo6Y29uc3RfaXRlcmF0b3IgaXQg
PSBtX2V4dHJhUmVxdWVzdEhlYWRlcnMtPmJlZ2luKCk7IGl0ICE9IGVuZDsgKytpdCkgewotICAg
ICAgICAgICAgU3RyaW5nIHZhbHVlOwotICAgICAgICAgICAgaWYgKGl0LT52YWx1ZS0+YXNTdHJp
bmcodmFsdWUpKQotICAgICAgICAgICAgICAgIHJlcXVlc3Quc2V0SFRUUEhlYWRlckZpZWxkKGl0
LT5rZXksIHZhbHVlKTsKLSAgICAgICAgfQotICAgIH0KKyAgICBmb3IgKGF1dG8mIGVudHJ5IDog
bV9leHRyYVJlcXVlc3RIZWFkZXJzKQorICAgICAgICByZXF1ZXN0LnNldEhUVFBIZWFkZXJGaWVs
ZChlbnRyeS5rZXksIGVudHJ5LnZhbHVlKTsKIAogICAgIHJlcXVlc3Quc2V0UmVwb3J0TG9hZFRp
bWluZyh0cnVlKTsKICAgICByZXF1ZXN0LnNldFJlcG9ydFJhd0hlYWRlcnModHJ1ZSk7CkBAIC02
MjQsOSArNjE4LDEzIEBAIHZvaWQgSW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6ZGlzYWJsZShFcnJv
clN0cmluZyYpCiAgICAgbV9leHRyYVJlcXVlc3RIZWFkZXJzLmNsZWFyKCk7CiB9CiAKLXZvaWQg
SW5zcGVjdG9yUmVzb3VyY2VBZ2VudDo6c2V0RXh0cmFIVFRQSGVhZGVycyhFcnJvclN0cmluZyYs
IGNvbnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgaGVhZGVycykKK3ZvaWQgSW5zcGVjdG9y
UmVzb3VyY2VBZ2VudDo6c2V0RXh0cmFIVFRQSGVhZGVycyhFcnJvclN0cmluZyYsIGNvbnN0IElu
c3BlY3Rvck9iamVjdCYgaGVhZGVycykKIHsKLSAgICBtX2V4dHJhUmVxdWVzdEhlYWRlcnMgPSBo
ZWFkZXJzLmNvcHlSZWYoKTsKKyAgICBmb3IgKGF1dG8mIGVudHJ5IDogaGVhZGVycykgeworICAg
ICAgICBTdHJpbmcgc3RyaW5nVmFsdWU7CisgICAgICAgIGlmIChlbnRyeS52YWx1ZS0+YXNTdHJp
bmcoc3RyaW5nVmFsdWUpKQorICAgICAgICAgICAgbV9leHRyYVJlcXVlc3RIZWFkZXJzLnNldChl
bnRyeS5rZXksIHN0cmluZ1ZhbHVlKTsKKyAgICB9CiB9CiAKIHZvaWQgSW5zcGVjdG9yUmVzb3Vy
Y2VBZ2VudDo6Z2V0UmVzcG9uc2VCb2R5KEVycm9yU3RyaW5nJiBlcnJvclN0cmluZywgY29uc3Qg
U3RyaW5nJiByZXF1ZXN0SWQsIFN0cmluZyogY29udGVudCwgYm9vbCogYmFzZTY0RW5jb2RlZCkK
ZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFn
ZW50LmggYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yUmVzb3VyY2VBZ2VudC5o
CmluZGV4IDZhY2RlMmIuLmUyNTUzMWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3Bl
Y3Rvci9JbnNwZWN0b3JSZXNvdXJjZUFnZW50LmgKKysrIGIvU291cmNlL1dlYkNvcmUvaW5zcGVj
dG9yL0luc3BlY3RvclJlc291cmNlQWdlbnQuaApAQCAtMTE3LDcgKzExNyw3IEBAIHB1YmxpYzoK
ICAgICAvLyBDYWxsZWQgZnJvbSBmcm9udGVuZC4KICAgICB2aXJ0dWFsIHZvaWQgZW5hYmxlKEVy
cm9yU3RyaW5nJikgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2FibGUoRXJyb3JTdHJp
bmcmKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2V0RXh0cmFIVFRQSGVhZGVycyhFcnJv
clN0cmluZyYsIGNvbnN0IFJlZlB0cjxJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdD4mJikgb3Zl
cnJpZGU7CisgICAgdmlydHVhbCB2b2lkIHNldEV4dHJhSFRUUEhlYWRlcnMoRXJyb3JTdHJpbmcm
LCBjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgaGVhZGVycykgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGdldFJlc3BvbnNlQm9keShFcnJvclN0cmluZyYsIGNvbnN0IFN0cmlu
ZyYgcmVxdWVzdElkLCBTdHJpbmcqIGNvbnRlbnQsIGJvb2wqIGJhc2U2NEVuY29kZWQpIG92ZXJy
aWRlOwogICAgIHZpcnR1YWwgdm9pZCBjYW5DbGVhckJyb3dzZXJDYWNoZShFcnJvclN0cmluZyYs
IGJvb2wqKSBvdmVycmlkZTsKICAgICB2aXJ0dWFsIHZvaWQgY2xlYXJCcm93c2VyQ2FjaGUoRXJy
b3JTdHJpbmcmKSBvdmVycmlkZTsKQEAgLTEzOSw3ICsxMzksNyBAQCBwcml2YXRlOgogICAgIGJv
b2wgbV9lbmFibGVkOwogICAgIGJvb2wgbV9jYWNoZURpc2FibGVkOwogICAgIGJvb2wgbV9sb2Fk
aW5nWEhSU3luY2hyb25vdXNseTsKLSAgICBSZWZQdHI8SW5zcGVjdG9yOjpJbnNwZWN0b3JPYmpl
Y3Q+IG1fZXh0cmFSZXF1ZXN0SGVhZGVyczsKKyAgICBIYXNoTWFwPFN0cmluZywgU3RyaW5nPiBt
X2V4dHJhUmVxdWVzdEhlYWRlcnM7CiAKICAgICBIYXNoU2V0PHVuc2lnbmVkIGxvbmc+IG1faGlk
ZGVuUmVxdWVzdElkZW50aWZpZXJzOwogCmRpZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNw
ZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oIGIvU291cmNlL1dlYkNvcmUvaW5zcGVjdG9yL0lu
c3BlY3RvclN0eWxlU2hlZXQuaAppbmRleCBlNzc2MTdkLi45ZTdhYjMyIDEwMDY0NAotLS0gYS9T
b3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yU3R5bGVTaGVldC5oCisrKyBiL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JTdHlsZVNoZWV0LmgKQEAgLTU2LDEyICs1Niwx
MiBAQCBjbGFzcyBJbnNwZWN0b3JDU1NJZCB7CiBwdWJsaWM6CiAgICAgSW5zcGVjdG9yQ1NTSWQo
KSB7IH0KIAotICAgIGV4cGxpY2l0IEluc3BlY3RvckNTU0lkKGNvbnN0IFJlZlB0cjxJbnNwZWN0
b3I6Okluc3BlY3Rvck9iamVjdD4mJiB2YWx1ZSkKKyAgICBleHBsaWNpdCBJbnNwZWN0b3JDU1NJ
ZChjb25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgdmFsdWUpCiAgICAgewotICAgICAg
ICBpZiAoIXZhbHVlLT5nZXRTdHJpbmcoQVNDSUlMaXRlcmFsKCJzdHlsZVNoZWV0SWQiKSwgbV9z
dHlsZVNoZWV0SWQpKQorICAgICAgICBpZiAoIXZhbHVlLmdldFN0cmluZyhBU0NJSUxpdGVyYWwo
InN0eWxlU2hlZXRJZCIpLCBtX3N0eWxlU2hlZXRJZCkpCiAgICAgICAgICAgICByZXR1cm47CiAK
LSAgICAgICAgaWYgKCF2YWx1ZS0+Z2V0SW50ZWdlcihBU0NJSUxpdGVyYWwoIm9yZGluYWwiKSwg
bV9vcmRpbmFsKSkKKyAgICAgICAgaWYgKCF2YWx1ZS5nZXRJbnRlZ2VyKEFTQ0lJTGl0ZXJhbCgi
b3JkaW5hbCIpLCBtX29yZGluYWwpKQogICAgICAgICAgICAgbV9zdHlsZVNoZWV0SWQgPSBTdHJp
bmcoKTsKICAgICB9CiAKZGlmZiAtLWdpdCBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JXb3JrZXJBZ2VudC5jcHAgYi9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9y
V29ya2VyQWdlbnQuY3BwCmluZGV4IGQ4NGJiMDUuLmRlYmM2OTggMTAwNjQ0Ci0tLSBhL1NvdXJj
ZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5jcHAKKysrIGIvU291cmNl
L1dlYkNvcmUvaW5zcGVjdG9yL0luc3BlY3RvcldvcmtlckFnZW50LmNwcApAQCAtMTcxLDExICsx
NzEsMTEgQEAgdm9pZCBJbnNwZWN0b3JXb3JrZXJBZ2VudDo6ZGlzY29ubmVjdEZyb21Xb3JrZXIo
RXJyb3JTdHJpbmcmIGVycm9yLCBpbnQgd29ya2VySWQKICAgICAgICAgZXJyb3IgPSBBU0NJSUxp
dGVyYWwoIldvcmtlciBpcyBnb25lIik7CiB9CiAKLXZvaWQgSW5zcGVjdG9yV29ya2VyQWdlbnQ6
OnNlbmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JTdHJpbmcmIGVycm9yLCBpbnQgd29ya2VySWQsIGNv
bnN0IFJlZlB0cjxJbnNwZWN0b3JPYmplY3Q+JiYgbWVzc2FnZSkKK3ZvaWQgSW5zcGVjdG9yV29y
a2VyQWdlbnQ6OnNlbmRNZXNzYWdlVG9Xb3JrZXIoRXJyb3JTdHJpbmcmIGVycm9yLCBpbnQgd29y
a2VySWQsIGNvbnN0IEluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSkKIHsKICAgICBXb3JrZXJGcm9u
dGVuZENoYW5uZWwqIGNoYW5uZWwgPSBtX2lkVG9DaGFubmVsLmdldCh3b3JrZXJJZCk7CiAgICAg
aWYgKGNoYW5uZWwpCi0gICAgICAgIGNoYW5uZWwtPnByb3h5KCktPnNlbmRNZXNzYWdlVG9JbnNw
ZWN0b3IobWVzc2FnZS0+dG9KU09OU3RyaW5nKCkpOworICAgICAgICBjaGFubmVsLT5wcm94eSgp
LT5zZW5kTWVzc2FnZVRvSW5zcGVjdG9yKG1lc3NhZ2UudG9KU09OU3RyaW5nKCkpOwogICAgIGVs
c2UKICAgICAgICAgZXJyb3IgPSBBU0NJSUxpdGVyYWwoIldvcmtlciBpcyBnb25lIik7CiB9CmRp
ZmYgLS1naXQgYS9Tb3VyY2UvV2ViQ29yZS9pbnNwZWN0b3IvSW5zcGVjdG9yV29ya2VyQWdlbnQu
aCBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNwZWN0b3JXb3JrZXJBZ2VudC5oCmluZGV4
IDRlNzNjZmIuLjIzZjZlNWMgMTAwNjQ0Ci0tLSBhL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9J
bnNwZWN0b3JXb3JrZXJBZ2VudC5oCisrKyBiL1NvdXJjZS9XZWJDb3JlL2luc3BlY3Rvci9JbnNw
ZWN0b3JXb3JrZXJBZ2VudC5oCkBAIC02OCw3ICs2OCw3IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFs
IHZvaWQgY2FuSW5zcGVjdFdvcmtlcnMoRXJyb3JTdHJpbmcmLCBib29sKikgb3ZlcnJpZGU7CiAg
ICAgdmlydHVhbCB2b2lkIGNvbm5lY3RUb1dvcmtlcihFcnJvclN0cmluZyYsIGludCB3b3JrZXJJ
ZCkgb3ZlcnJpZGU7CiAgICAgdmlydHVhbCB2b2lkIGRpc2Nvbm5lY3RGcm9tV29ya2VyKEVycm9y
U3RyaW5nJiwgaW50IHdvcmtlcklkKSBvdmVycmlkZTsKLSAgICB2aXJ0dWFsIHZvaWQgc2VuZE1l
c3NhZ2VUb1dvcmtlcihFcnJvclN0cmluZyYsIGludCB3b3JrZXJJZCwgY29uc3QgUmVmUHRyPElu
c3BlY3Rvcjo6SW5zcGVjdG9yT2JqZWN0PiYmIG1lc3NhZ2UpIG92ZXJyaWRlOworICAgIHZpcnR1
YWwgdm9pZCBzZW5kTWVzc2FnZVRvV29ya2VyKEVycm9yU3RyaW5nJiwgaW50IHdvcmtlcklkLCBj
b25zdCBJbnNwZWN0b3I6Okluc3BlY3Rvck9iamVjdCYgbWVzc2FnZSkgb3ZlcnJpZGU7CiAgICAg
dmlydHVhbCB2b2lkIHNldEF1dG9jb25uZWN0VG9Xb3JrZXJzKEVycm9yU3RyaW5nJiwgYm9vbCB2
YWx1ZSkgb3ZlcnJpZGU7CiAKIHByaXZhdGU6Cg==
</data>
<flag name="review"
          id="280172"
          type_id="1"
          status="+"
          setter="joepeck"
    />
    <flag name="commit-queue"
          id="280173"
          type_id="3"
          status="-"
          setter="joepeck"
    />
          </attachment>
      

    </bug>

</bugzilla>