<?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>21122</bug_id>
          
          <creation_ts>2008-09-25 15:29:37 -0700</creation_ts>
          <short_desc>Autogenerate JS event listeners</short_desc>
          <delta_ts>2008-10-01 00:28:25 -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>WebCore JavaScript</component>
          <version>528+ (Nightly build)</version>
          <rep_platform>Mac</rep_platform>
          <op_sys>All</op_sys>
          <bug_status>RESOLVED</bug_status>
          <resolution>FIXED</resolution>
          
          
          <bug_file_loc></bug_file_loc>
          <status_whiteboard></status_whiteboard>
          <keywords></keywords>
          <priority>P2</priority>
          <bug_severity>Normal</bug_severity>
          <target_milestone>---</target_milestone>
          
          
          <everconfirmed>1</everconfirmed>
          <reporter name="Sam Weinig">sam</reporter>
          <assigned_to name="Nobody">webkit-unassigned</assigned_to>
          <cc>ap</cc>
    
    <cc>zimmermann</cc>
          

      

      

      

          <comment_sort_order>oldest_to_newest</comment_sort_order>  
          <long_desc isprivate="0" >
    <commentid>92815</commentid>
    <comment_count>0</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-09-25 15:29:37 -0700</bug_when>
    <thetext>A big chuck of the remain code to be autogenerated is the event listener code (ie. window.onload and the like).  Getting it generated would be a great move in the right direction</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93335</commentid>
    <comment_count>1</comment_count>
      <attachid>23932</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-09-29 22:36:10 -0700</bug_when>
    <thetext>Created attachment 23932
patch 1 - generate EventTargetNode</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93459</commentid>
    <comment_count>2</comment_count>
      <attachid>23932</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-09-30 16:21:41 -0700</bug_when>
    <thetext>Comment on attachment 23932
patch 1 - generate EventTargetNode

First patch landed in 37090.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93460</commentid>
    <comment_count>3</comment_count>
      <attachid>23960</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-09-30 16:22:15 -0700</bug_when>
    <thetext>Created attachment 23960
patch 2 - standardize EventListeners</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93466</commentid>
    <comment_count>4</comment_count>
      <attachid>23960</attachid>
    <who name="Eric Seidel (no email)">eric</who>
    <bug_when>2008-09-30 16:53:17 -0700</bug_when>
    <thetext>Comment on attachment 23960
patch 2 - standardize EventListeners

yay!  yay!  yay!

+    if (JSUnprotectedEventListener* listener = static_cast&lt;JSUnprotectedEventListener*&gt;(m_impl-&gt;onchecking()))
+        listener-&gt;mark();
Should be a static inline function, IMO
markListener(m_impl-&gt;onchecking());
Seems such a static-inline probably should be in some JSBinding.h type header since it could be used all over the place.  Then we could later add a type-check in a single place to handle the obj-c bad static cast check.

If there is a way to set any of these via obj-c, it seems all of this code would crash due to bad static_casts. :(

Can a frame ever not have a window object?  Even say, during destruction?  Cause your code seems to assume that toJSDOMWindow() can never return NULL (which may very well be the case).

It seems also given how common:
toJSDOMWindow(frame)-&gt;findOrCreateJSUnprotectedEventListener(exec, value, true)
is we might consider making that a static inline function in some JSBinding.h-like header.
findOrCreateJSUnprotectedEventLisener(frame, exec, value) (I guess that only really saves toJSDOMWindow(frame)-&gt; and , true from typing... 

In terms of solving hte &quot;obj-c listeners cause crash case) one could very easily add a toUnprotectedEventListener() function which did the conversion and was used by all the above proposed functions, as well as any case in this existing code where one needs to do that cast.  

Otherwise looks great!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93472</commentid>
    <comment_count>5</comment_count>
    <who name="Darin Adler">darin</who>
    <bug_when>2008-09-30 17:13:46 -0700</bug_when>
    <thetext>(In reply to comment #4)
&gt; Seems such a static-inline probably should be in some JSBinding.h type header

As I discussed with Sam the other day. If we&apos;re putting an inline in a header it should not be marked static. The static gives it internal linkage which is not what we want for inline functions in a header.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93476</commentid>
    <comment_count>6</comment_count>
      <attachid>23960</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-09-30 17:39:51 -0700</bug_when>
    <thetext>Comment on attachment 23960
patch 2 - standardize EventListeners

Second patch landed in r37128.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93515</commentid>
    <comment_count>7</comment_count>
      <attachid>23968</attachid>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-09-30 23:54:40 -0700</bug_when>
    <thetext>Created attachment 23968
Patch 3 - Generation</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93518</commentid>
    <comment_count>8</comment_count>
      <attachid>23968</attachid>
    <who name="Nikolas Zimmermann">zimmermann</who>
    <bug_when>2008-10-01 00:10:26 -0700</bug_when>
    <thetext>Comment on attachment 23968
Patch 3 - Generation 

Yay! Another excellent patch in the right direction, r+ r+ r+!</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93519</commentid>
    <comment_count>9</comment_count>
      <attachid>23968</attachid>
    <who name="Alexey Proskuryakov">ap</who>
    <bug_when>2008-10-01 00:18:28 -0700</bug_when>
    <thetext>Comment on attachment 23968
Patch 3 - Generation 

r=me

Please don&apos;t auto-generate MessagePort listeners yet - they will need to learn how to work when there is no frame or window soon.

XMLHttpRequest will also need to work in worker threads, but that will happen much later, so I think that it&apos;s good to auto-generate it now.</thetext>
  </long_desc><long_desc isprivate="0" >
    <commentid>93521</commentid>
    <comment_count>10</comment_count>
    <who name="Sam Weinig">sam</who>
    <bug_when>2008-10-01 00:28:25 -0700</bug_when>
    <thetext>Last patch landed in r37142.</thetext>
  </long_desc>
      
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23932</attachid>
            <date>2008-09-29 22:36:10 -0700</date>
            <delta_ts>2008-09-30 16:21:41 -0700</delta_ts>
            <desc>patch 1 - generate EventTargetNode</desc>
            <filename>etn.diff</filename>
            <type>text/plain</type>
            <size>76211</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM3MDg5
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsNDYgQEAKKzIwMDgtMDkt
MjkgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBQYXRjaCBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMTIyCisgICAgICAgIEF1dG9nZW5lcmF0ZSBKUyBldmVudCBs
aXN0ZW5lcnMKKworICAgICAgICAtIEdlbmVyYXRlIEV2ZW50VGFyZ2V0Tm9kZS4KKworICAgICAg
ICAqIERlcml2ZWRTb3VyY2VzLm1ha2U6CisgICAgICAgICogR05VbWFrZWZpbGUuYW06CisgICAg
ICAgICogV2ViQ29yZS5wcm86CisgICAgICAgICogV2ViQ29yZS52Y3Byb2ovV2ViQ29yZS52Y3By
b2o6CisgICAgICAgICogV2ViQ29yZS54Y29kZXByb2ovcHJvamVjdC5wYnhwcm9qOgorICAgICAg
ICAqIFdlYkNvcmVTb3VyY2VzLmJrbDoKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlz
dGVuZXIuY3BwOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwOiBBZGRl
ZC4KKyAgICAgICAgKFdlYkNvcmU6OnRvSlMpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZl
bnRUYXJnZXQuaDogQWRkZWQuCisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEJh
c2UuY3BwOiBSZW1vdmVkLgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRCYXNl
Lmg6CisgICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldE5vZGUuY3BwOiBSZW1vdmVk
LgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXROb2RlLmg6IFJlbW92ZWQuCisg
ICAgICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldE5vZGVDdXN0b20uY3BwOiBBZGRlZC4K
KyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRUYXJnZXROb2RlOjphZGRFdmVudExpc3RlbmVyKToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRUYXJnZXROb2RlOjpyZW1vdmVFdmVudExpc3RlbmVy
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRUYXJnZXROb2RlOjpkaXNwYXRjaEV2ZW50KToK
KyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRUYXJnZXROb2RlOjpnZXRMaXN0ZW5lcik6CisgICAg
ICAgIChXZWJDb3JlOjpKU0V2ZW50VGFyZ2V0Tm9kZTo6c2V0TGlzdGVuZXIpOgorICAgICAgICAo
V2ViQ29yZTo6SlNFdmVudFRhcmdldE5vZGU6OnB1c2hFdmVudEhhbmRsZXJTY29wZSk6CisgICAg
ICAgICogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZS5jcHA6Cisg
ICAgICAgIChXZWJDb3JlOjopOgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudFRhcmdldFNWR0Vs
ZW1lbnRJbnN0YW5jZVByb3RvdHlwZTo6c2VsZik6CisgICAgICAgIChXZWJDb3JlOjpKU0V2ZW50
VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlUHJvdG90eXBlOjpnZXRPd25Qcm9wZXJ0eVNsb3QpOgor
ICAgICAgICAoanNFdmVudFRhcmdldEFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoanNFdmVu
dFRhcmdldFJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoanNFdmVudFRhcmdldERpc3Bh
dGNoRXZlbnQpOgorICAgICAgICAqIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRTVkdFbGVtZW50
SW5zdGFuY2UuaDoKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5z
dGFuY2VQcm90b3R5cGU6OkpTRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VQcm90b3R5cGUp
OgorICAgICAgICAoV2ViQ29yZTo6SlNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZVByb3Rv
dHlwZTo6Y2xhc3NJbmZvKToKKyAgICAgICAgKiBiaW5kaW5ncy9zY3JpcHRzL0NvZGVHZW5lcmF0
b3JKUy5wbToKKyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXROb2RlLmlkbDogQWRkZWQuCisKIDIw
MDgtMDktMjkgIERhcmluIEFkbGVyICA8ZGFyaW5AYXBwbGUuY29tPgogCiAgICAgICAgIFJldmll
d2VkIGJ5IFNhbSBXZWluaWcuCkluZGV4OiBEZXJpdmVkU291cmNlcy5tYWtlCj09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0K
LS0tIERlcml2ZWRTb3VyY2VzLm1ha2UJKHJldmlzaW9uIDM3MDQ1KQorKysgRGVyaXZlZFNvdXJj
ZXMubWFrZQkod29ya2luZyBjb3B5KQpAQCAtODgsNiArODgsNyBAQCBET01fQ0xBU1NFUyA9IFwK
ICAgICBFdmVudEV4Y2VwdGlvbiBcCiAgICAgRXZlbnRMaXN0ZW5lciBcCiAgICAgRXZlbnRUYXJn
ZXQgXAorICAgIEV2ZW50VGFyZ2V0Tm9kZSBcCiAgICAgRmlsZSBcCiAgICAgRmlsZUxpc3QgXAog
ICAgIEhUTUxBbmNob3JFbGVtZW50IFwKQEAgLTM2OSw4ICszNzAsNiBAQCBhbGwgOiBcCiAgICAg
JChmaWx0ZXItb3V0IEpTRXZlbnRMaXN0ZW5lci5oIEpTUkdCQ29sb3IuaCwkKERPTV9DTEFTU0VT
OiU9SlMlLmgpKSBcCiAgICAgXAogICAgIEpTRE9NV2luZG93QmFzZS5sdXQuaCBcCi0gICAgSlNF
dmVudFRhcmdldEJhc2UubHV0LmggXAotICAgIEpTRXZlbnRUYXJnZXROb2RlLmx1dC5oIFwKICAg
ICBKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlLmx1dC5oIFwKICAgICBKU1JHQkNvbG9y
Lmx1dC5oIFwKICAgICBcCkluZGV4OiBHTlVtYWtlZmlsZS5hbQo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBHTlVt
YWtlZmlsZS5hbQkocmV2aXNpb24gMzcwNDUpCisrKyBHTlVtYWtlZmlsZS5hbQkod29ya2luZyBj
b3B5KQpAQCAtNTQsOCArNTQsNiBAQCB3ZWJjb3JlX2J1aWx0X25vc291cmNlcyArPSBcCiAJRGVy
aXZlZFNvdXJjZXMvdG9rZW5pemVyLmNwcCBcCiAJRGVyaXZlZFNvdXJjZXMvQ29sb3JEYXRhLmMg
XAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNET01XaW5kb3dCYXNlLmx1dC5oIFwKLQlXZWJDb3Jl
L2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRCYXNlLmx1dC5oIFwKLQlXZWJDb3JlL2JpbmRpbmdz
L2pzL0pTRXZlbnRUYXJnZXROb2RlLmx1dC5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZl
bnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2UubHV0LmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMv
SlNSR0JDb2xvci5sdXQuaAogCkBAIC0xNDcsNiArMTQ1LDggQEAgd2ViY29yZV9idWlsdF9zb3Vy
Y2VzICs9IFwKIAlEZXJpdmVkU291cmNlcy9KU0V2ZW50LmggXAogCURlcml2ZWRTb3VyY2VzL0pT
RXZlbnRFeGNlcHRpb24uY3BwIFwKIAlEZXJpdmVkU291cmNlcy9KU0V2ZW50RXhjZXB0aW9uLmgg
XAorCURlcml2ZWRTb3VyY2VzL0pTRXZlbnRUYXJnZXROb2RlLmNwcCBcCisJRGVyaXZlZFNvdXJj
ZXMvSlNFdmVudFRhcmdldE5vZGUuaCBcCiAJRGVyaXZlZFNvdXJjZXMvSlNGaWxlLmNwcCBcCiAJ
RGVyaXZlZFNvdXJjZXMvSlNGaWxlLmggXAogCURlcml2ZWRTb3VyY2VzL0pTRmlsZUxpc3QuY3Bw
IFwKQEAgLTY0MywxMyArNjQzLDEzIEBAIHdlYmNvcmVfc291cmNlcyArPSBcCiAJV2ViQ29yZS9i
aW5kaW5ncy9qcy9KU0V2ZW50Q3VzdG9tLmNwcCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2
ZW50TGlzdGVuZXIuY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5o
IFwKLQlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRCYXNlLmNwcCBcCisJV2ViQ29y
ZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmNwcCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9K
U0V2ZW50VGFyZ2V0LmggXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEJhc2Uu
aCBcCi0JV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Tm9kZS5jcHAgXAotCVdlYkNv
cmUvYmluZGluZ3MvanMvSlNIVE1MQWxsQ29sbGVjdGlvbi5jcHAgXAotCVdlYkNvcmUvYmluZGlu
Z3MvanMvSlNFdmVudFRhcmdldE5vZGUuaCBcCisJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
VGFyZ2V0Tm9kZUN1c3RvbS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRhcmdl
dFNWR0VsZW1lbnRJbnN0YW5jZS5jcHAgXAogCVdlYkNvcmUvYmluZGluZ3MvanMvSlNFdmVudFRh
cmdldFNWR0VsZW1lbnRJbnN0YW5jZS5oIFwKKwlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFs
bENvbGxlY3Rpb24uY3BwIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rp
b24uaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmNw
cCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0hUTUxBcHBsZXRFbGVtZW50Q3VzdG9tLmggXApA
QCAtMzU2Myw4ICszNTYzLDYgQEAgd2ViY29yZV9kaXN0ICs9IFwKICMgQ2xlYW4gcnVsZXMgZm9y
IFdlYkNvcmUKIAogQ0xFQU5GSUxFUyArPSBcCi0JV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50
VGFyZ2V0QmFzZS5sdXQuaCBcCi0JV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Tm9k
ZS5sdXQuaCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudElu
c3RhbmNlLmx1dC5oIFwKIAlXZWJDb3JlL2JpbmRpbmdzL2pzL0pTRE9NV2luZG93QmFzZS5sdXQu
aCBcCiAJV2ViQ29yZS9iaW5kaW5ncy9qcy9KU1JHQkNvbG9yLmx1dC5oCkluZGV4OiBXZWJDb3Jl
LnBybwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlLnBybwkocmV2aXNpb24gMzcwNDUpCisrKyBXZWJD
b3JlLnBybwkod29ya2luZyBjb3B5KQpAQCAtMjAxLDggKzIwMSw2IEBAIFNUWUxFU0hFRVRTX0VN
QkVEID0gJCRQV0QvY3NzL2h0bWw0LmNzcwogCiBMVVRfRklMRVMgKz0gXAogICAgIGJpbmRpbmdz
L2pzL0pTRE9NV2luZG93QmFzZS5jcHAgXAotICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRC
YXNlLmNwcCBcCi0gICAgYmluZGluZ3MvanMvSlNFdmVudFRhcmdldE5vZGUuY3BwIFwKICAgICBi
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlLmNwcCBcCiAgICAgYmlu
ZGluZ3MvanMvSlNSR0JDb2xvci5jcHAKIApAQCAtMjQ3LDYgKzI0NSw3IEBAIElETF9CSU5ESU5H
UyArPSBcCiAgICAgZG9tL0V2ZW50RXhjZXB0aW9uLmlkbCBcCiAjICAgIGRvbS9FdmVudExpc3Rl
bmVyLmlkbCBcCiAjICAgIGRvbS9FdmVudFRhcmdldC5pZGwgXAorICAgIGRvbS9FdmVudFRhcmdl
dE5vZGUuaWRsIFwKICAgICBkb20vS2V5Ym9hcmRFdmVudC5pZGwgXAogICAgIGRvbS9Nb3VzZUV2
ZW50LmlkbCBcCiAgICAgZG9tL01lc3NhZ2VDaGFubmVsLmlkbCBcCkBAIC0zODAsOCArMzc5LDgg
QEAgU09VUkNFUyArPSBcCiAgICAgYmluZGluZ3MvanMvSlNET01XaW5kb3dTaGVsbC5jcHAgXAog
ICAgIGJpbmRpbmdzL2pzL0pTRWxlbWVudEN1c3RvbS5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pT
RXZlbnRDdXN0b20uY3BwIFwKLSAgICBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0QmFzZS5jcHAg
XAotICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXROb2RlLmNwcCBcCisgICAgYmluZGluZ3Mv
anMvSlNFdmVudFRhcmdldC5jcHAgXAorICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXROb2Rl
Q3VzdG9tLmNwcCBcCiAgICAgYmluZGluZ3MvanMvSlNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0
YW5jZS5jcHAgXAogICAgIGJpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb24uY3BwIFwKICAg
ICBiaW5kaW5ncy9qcy9KU0hpc3RvcnlDdXN0b20uY3BwIFwKSW5kZXg6IFdlYkNvcmVTb3VyY2Vz
LmJrbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlU291cmNlcy5ia2wJKHJldmlzaW9uIDM3MDQ1KQor
KysgV2ViQ29yZVNvdXJjZXMuYmtsCSh3b3JraW5nIGNvcHkpCkBAIC01OCw4ICs1OCw4IEBAIFRo
aXMgZmlsZSBjb250YWlucyB0aGUgbGlzdCBvZiBmaWxlcyBuZWUKICAgICAgICAgYmluZGluZ3Mv
anMvSlNEb2N1bWVudEZyYWdtZW50Q3VzdG9tLmNwcAogICAgICAgICBiaW5kaW5ncy9qcy9KU0Vs
ZW1lbnRDdXN0b20uY3BwCiAgICAgICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRDdXN0b20uY3BwCi0g
ICAgICAgIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRCYXNlLmNwcAotICAgICAgICBiaW5kaW5n
cy9qcy9KU0V2ZW50VGFyZ2V0Tm9kZS5jcHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNFdmVudFRh
cmdldC5jcHAKKyAgICAgICAgYmluZGluZ3MvanMvSlNFdmVudFRhcmdldE5vZGVDdXN0b20uY3Bw
CiAgICAgICAgIGJpbmRpbmdzL2pzL0pTSFRNTEFsbENvbGxlY3Rpb24uY3BwCiAgICAgICAgIGJp
bmRpbmdzL2pzL0pTSGlzdG9yeUN1c3RvbS5jcHAKICAgICAgICAgYmluZGluZ3MvanMvSlNIVE1M
QXBwbGV0RWxlbWVudEN1c3RvbS5jcHAKSW5kZXg6IFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNw
cm9qCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT0KLS0tIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCShyZXZpc2lv
biAzNzA0NSkKKysrIFdlYkNvcmUudmNwcm9qL1dlYkNvcmUudmNwcm9qCSh3b3JraW5nIGNvcHkp
CkBAIC02ODgsMTEgKzY4OCw3IEBACiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJCQk8RmlsZQ0KLQkJ
CQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNFdmVudFRhcmdldEJhc2UubHV0LmgiDQotCQkJCT4NCi0JCQk8L0ZpbGU+
DQotCQkJPEZpbGUNCi0JCQkJUmVsYXRpdmVQYXRoPSIkKFdlYktpdE91dHB1dERpcilcb2JqXCQo
UHJvamVjdE5hbWUpXERlcml2ZWRTb3VyY2VzXEpTRXZlbnRUYXJnZXROb2RlLmx1dC5oIg0KKwkJ
CQlSZWxhdGl2ZVBhdGg9IiQoV2ViS2l0T3V0cHV0RGlyKVxvYmpcJChQcm9qZWN0TmFtZSlcRGVy
aXZlZFNvdXJjZXNcSlNFdmVudFRhcmdldE5vZGUuaCINCiAJCQkJPg0KIAkJCTwvRmlsZT4NCiAJ
CQk8RmlsZQ0KQEAgLTEzNDEzLDE5ICsxMzQwOSwxOSBAQAogCQkJCQk+DQogCQkJCTwvRmlsZT4N
CiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNcSlNFdmVudFRh
cmdldEJhc2UuY3BwIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0V2ZW50
VGFyZ2V0LmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KLQkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0V2ZW50VGFyZ2V0QmFzZS5oIg0KKwkJCQkJUmVs
YXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xqc1xKU0V2ZW50VGFyZ2V0LmgiDQogCQkJCQk+DQogCQkJ
CTwvRmlsZT4NCiAJCQkJPEZpbGUNCi0JCQkJCVJlbGF0aXZlUGF0aD0iLi5cYmluZGluZ3NcanNc
SlNFdmVudFRhcmdldE5vZGUuY3BwIg0KKwkJCQkJUmVsYXRpdmVQYXRoPSIuLlxiaW5kaW5nc1xq
c1xKU0V2ZW50VGFyZ2V0QmFzZS5oIg0KIAkJCQkJPg0KIAkJCQk8L0ZpbGU+DQogCQkJCTxGaWxl
DQotCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRXZlbnRUYXJnZXROb2RlLmgi
DQorCQkJCQlSZWxhdGl2ZVBhdGg9Ii4uXGJpbmRpbmdzXGpzXEpTRXZlbnRUYXJnZXROb2RlQ3Vz
dG9tLmNwcCINCiAJCQkJCT4NCiAJCQkJPC9GaWxlPg0KIAkJCQk8RmlsZQ0KSW5kZXg6IFdlYkNv
cmUueGNvZGVwcm9qL3Byb2plY3QucGJ4cHJvago9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBXZWJDb3JlLnhjb2Rl
cHJvai9wcm9qZWN0LnBieHByb2oJKHJldmlzaW9uIDM3MDQ1KQorKysgV2ViQ29yZS54Y29kZXBy
b2ovcHJvamVjdC5wYnhwcm9qCSh3b3JraW5nIGNvcHkpCkBAIC0zMTkzLDcgKzMxOTMsNiBAQAog
CQlCMjU1OTlCQTBEMDBEOEJBMDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VNYXJrZXIuaCBpbiBIZWFk
ZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNTU5OTIyMEQwMEQ4Qjkw
MEJCODI1QyAvKiBTVkdSZXNvdXJjZU1hcmtlci5oICovOyB9OwogCQlCMjU1OTlCQjBEMDBEOEJB
MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VNYXNrZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1NTk5MjMwRDAwRDhCOTAwQkI4MjVDIC8qIFNWR1Jl
c291cmNlTWFza2VyLmNwcCAqLzsgfTsKIAkJQjI1NTk5QkMwRDAwRDhCQTAwQkI4MjVDIC8qIFNW
R1Jlc291cmNlTWFza2VyLmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMjU1OTkyNDBEMDBEOEI5MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VNYXNrZXIuaCAq
LzsgfTsKLQkJQjI1QkU1MTAwRDA2QjcwODAwQjUyNEM2IC8qIEpTRXZlbnRUYXJnZXRCYXNlLmNw
cCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyNUJFNTBF
MEQwNkI3MDgwMEI1MjRDNiAvKiBKU0V2ZW50VGFyZ2V0QmFzZS5jcHAgKi87IH07CiAJCUIyNUJF
NTExMEQwNkI3MDgwMEI1MjRDNiAvKiBKU0V2ZW50VGFyZ2V0QmFzZS5oIGluIEhlYWRlcnMgKi8g
PSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI1QkU1MEYwRDA2QjcwODAwQjUyNEM2
IC8qIEpTRXZlbnRUYXJnZXRCYXNlLmggKi87IH07CiAJCUIyNURGQUFGMEIyRTI5MjkwMDBFNjUx
MCAvKiBKU1NWR01hdHJpeEN1c3RvbS5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWls
ZEZpbGU7IGZpbGVSZWYgPSBCMjVERkFBRTBCMkUyOTI5MDAwRTY1MTAgLyogSlNTVkdNYXRyaXhD
dXN0b20uY3BwICovOyB9OwogCQlCMjYyQjgwNDBEMUYzMkQwMDAxNThGMDkgLyogU1ZHRm9udC5j
cHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCMjYyQjgw
MzBEMUYzMkQwMDAxNThGMDkgLyogU1ZHRm9udC5jcHAgKi87IH07CkBAIC0zMjY0LDcgKzMyNjMs
NiBAQAogCQlCMjdCMjg1QzBDRUYwRDcyMDBEMzlENTQgLyogRE9NU1ZHRm9udEVsZW1lbnQuaCBp
biBDb3B5IEdlbmVyYXRlZCBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJl
ZiA9IEIyN0IyODJEMENFRjBDMzUwMEQzOUQ1NCAvKiBET01TVkdGb250RWxlbWVudC5oICovOyB9
OwogCQlCMjdCMjg1RDBDRUYwRDcyMDBEMzlENTQgLyogRE9NU1ZHR2x5cGhFbGVtZW50LmggaW4g
Q29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjdCMjgzMDBDRUYwQzM1MDBEMzlENTQgLyogRE9NU1ZHR2x5cGhFbGVtZW50LmggKi87IH07
CiAJCUIyN0IyODVFMENFRjBENzIwMEQzOUQ1NCAvKiBET01TVkdNaXNzaW5nR2x5cGhFbGVtZW50
LmggaW4gQ29weSBHZW5lcmF0ZWQgSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZp
bGVSZWYgPSBCMjdCMjgzMzBDRUYwQzM1MDBEMzlENTQgLyogRE9NU1ZHTWlzc2luZ0dseXBoRWxl
bWVudC5oICovOyB9OwotCQlCMjhCQzMxQTBEMTM1RTU0MDBDREJBMjcgLyogSlNFdmVudFRhcmdl
dEJhc2UubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYg
PSBCMjhCQzMxOTBEMTM1RTU0MDBDREJBMjcgLyogSlNFdmVudFRhcmdldEJhc2UubHV0LmggKi87
IH07CiAJCUIyOEM2QTI3MEQwMEM0NDgwMDMzNEFBNCAvKiBTVkdEb2N1bWVudEV4dGVuc2lvbnMu
Y3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQjI4QzZB
MUUwRDAwQzQ0ODAwMzM0QUE0IC8qIFNWR0RvY3VtZW50RXh0ZW5zaW9ucy5jcHAgKi87IH07CiAJ
CUIyOEM2QTI4MEQwMEM0NDgwMDMzNEFBNCAvKiBTVkdEb2N1bWVudEV4dGVuc2lvbnMuaCBpbiBI
ZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyOEM2QTFGMEQwMEM0
NDgwMDMzNEFBNCAvKiBTVkdEb2N1bWVudEV4dGVuc2lvbnMuaCAqLzsgfTsKIAkJQjI4QzZBMjkw
RDAwQzQ0ODAwMzM0QUE0IC8qIFNWR0ltYWdlTG9hZGVyLmNwcCBpbiBTb3VyY2VzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEIyOEM2QTIwMEQwMEM0NDgwMDMzNEFBNCAvKiBT
VkdJbWFnZUxvYWRlci5jcHAgKi87IH07CkBAIC0zNzEyLDcgKzM3MTAsMTAgQEAKIAkJQkMzQTQ0
REUwRTI2RDIwMjAwQzE0REZBIC8qIE5TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9
IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDM0E0NERDMEUyNkQyMDIwMEMxNERGQSAvKiBOU1Jl
c29sdmVyLmggKi87IH07CiAJCUJDM0E0NEUyMEUyNkQyMUIwMEMxNERGQSAvKiBKU05TUmVzb2x2
ZXIuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMz
QTQ0RTAwRTI2RDIxQjAwQzE0REZBIC8qIEpTTlNSZXNvbHZlci5jcHAgKi87IH07CiAJCUJDM0E0
NEUzMEUyNkQyMUIwMEMxNERGQSAvKiBKU05TUmVzb2x2ZXIuaCBpbiBIZWFkZXJzICovID0ge2lz
YSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDM0E0NEUxMEUyNkQyMUIwMEMxNERGQSAvKiBK
U05TUmVzb2x2ZXIuaCAqLzsgfTsKLQkJQkMzQkEwNEUwRThDNDZEQTAwRkM1RDIwIC8qIEpTRXZl
bnRUYXJnZXROb2RlLmx1dC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBm
aWxlUmVmID0gQkMzQkEwNEMwRThDNDZEQTAwRkM1RDIwIC8qIEpTRXZlbnRUYXJnZXROb2RlLmx1
dC5oICovOyB9OworCQlCQzNCN0FGMDBFOTE5QURBMDBENTQwNjUgLyogRXZlbnRUYXJnZXROb2Rl
LmlkbCBpbiBSZXNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMz
QjdBRUYwRTkxOUFEQTAwRDU0MDY1IC8qIEV2ZW50VGFyZ2V0Tm9kZS5pZGwgKi87IH07CisJCUJD
M0I3QUYzMEU5MTlDQTkwMEQ1NDA2NSAvKiBKU0V2ZW50VGFyZ2V0Tm9kZS5jcHAgaW4gU291cmNl
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNCN0FGMTBFOTE5Q0E5MDBE
NTQwNjUgLyogSlNFdmVudFRhcmdldE5vZGUuY3BwICovOyB9OworCQlCQzNCN0FGNDBFOTE5Q0E5
MDBENTQwNjUgLyogSlNFdmVudFRhcmdldE5vZGUuaCBpbiBIZWFkZXJzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDM0I3QUYyMEU5MTlDQTkwMEQ1NDA2NSAvKiBKU0V2ZW50
VGFyZ2V0Tm9kZS5oICovOyB9OworCQlCQzNCN0IyMTBFOTFBQUY0MDBENTQwNjUgLyogSlNFdmVu
dFRhcmdldE5vZGVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkMzQjdCMjAwRTkxQUFGNDAwRDU0MDY1IC8qIEpTRXZlbnRUYXJnZXROb2Rl
Q3VzdG9tLmNwcCAqLzsgfTsKIAkJQkMzQkEwNEYwRThDNDZEQTAwRkM1RDIwIC8qIEpTRXZlbnRU
YXJnZXRTVkdFbGVtZW50SW5zdGFuY2UubHV0LmggaW4gSGVhZGVycyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzNCQTA0RDBFOEM0NkRBMDBGQzVEMjAgLyogSlNFdmVudFRh
cmdldFNWR0VsZW1lbnRJbnN0YW5jZS5sdXQuaCAqLzsgfTsKIAkJQkMzQzM5QjYwQzBEM0Q4RDAw
NUY0RDdBIC8qIEpTTWVkaWFMaXN0LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDM0MzOUI0MEMwRDNEOEQwMDVGNEQ3QSAvKiBKU01lZGlhTGlzdC5j
cHAgKi87IH07CiAJCUJDM0MzOUI3MEMwRDNEOEQwMDVGNEQ3QSAvKiBKU01lZGlhTGlzdC5oIGlu
IEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkMzQzM5QjUwQzBE
M0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmggKi87IH07CkBAIC0zODE0LDYgKzM4MTUsOCBA
QAogCQlCQzVFQkExMTBFODIzRTQ3MDBCMjU5NjUgLyogS2V5ZnJhbWVMaXN0LmggaW4gSGVhZGVy
cyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzVFQkEwRjBFODIzRTQ3MDBC
MjU5NjUgLyogS2V5ZnJhbWVMaXN0LmggKi87IH07CiAJCUJDNjA0OUNDMERCNTYwQzIwMDIwNDcz
OSAvKiBDU1NDYW52YXNWYWx1ZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxl
OyBmaWxlUmVmID0gQkM2MDQ5Q0IwREI1NjBDMjAwMjA0NzM5IC8qIENTU0NhbnZhc1ZhbHVlLmgg
Ki87IH07CiAJCUJDNjA0QTQzMERCNTYzNEUwMDIwNDczOSAvKiBDU1NDYW52YXNWYWx1ZS5jcHAg
aW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQzYwNEE0MjBE
QjU2MzRFMDAyMDQ3MzkgLyogQ1NTQ2FudmFzVmFsdWUuY3BwICovOyB9OworCQlCQzYwOTAxRjBF
OTFCOEVDMDAwQzY4QjUgLyogSlNFdmVudFRhcmdldC5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0g
UEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2MDkwMUQwRTkxQjhFQzAwMEM2OEI1IC8qIEpTRXZl
bnRUYXJnZXQuaCAqLzsgfTsKKwkJQkM2MDkwMjAwRTkxQjhFQzAwMEM2OEI1IC8qIEpTRXZlbnRU
YXJnZXQuY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkM2MDkwMUUwRTkxQjhFQzAwMEM2OEI1IC8qIEpTRXZlbnRUYXJnZXQuY3BwICovOyB9OwogCQlC
QzYwRDZFOTBEMjhEODM0MDBCOTkxOEYgLyogRE9NQ29yZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMg
Ki8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0gQkM2MEQ2RTgwRDI4RDgzNDAwQjk5
MThGIC8qIERPTUNvcmVFeGNlcHRpb24uaCAqLzsgfTsKIAkJQkM2MEQ3QzAwRDI5QTQ2MzAwQjk5
MThGIC8qIEpTRE9NQ29yZUV4Y2VwdGlvbi5jcHAgaW4gU291cmNlcyAqLyA9IHtpc2EgPSBQQlhC
dWlsZEZpbGU7IGZpbGVSZWYgPSBCQzYwRDdCRTBEMjlBNDYzMDBCOTkxOEYgLyogSlNET01Db3Jl
RXhjZXB0aW9uLmNwcCAqLzsgfTsKIAkJQkM2MEQ3QzEwRDI5QTQ2MzAwQjk5MThGIC8qIEpTRE9N
Q29yZUV4Y2VwdGlvbi5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkM2MEQ3QkYwRDI5QTQ2MzAwQjk5MThGIC8qIEpTRE9NQ29yZUV4Y2VwdGlvbi5oICov
OyB9OwpAQCAtMzk3OSw4ICszOTgyLDYgQEAKIAkJQkNEOUMyNjMwQzE3QUE2NzAwNUM5MEEyIC8q
IEpTTmFtZWROb2RlTWFwQ3VzdG9tLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxk
RmlsZTsgZmlsZVJlZiA9IEJDRDlDMjVGMEMxN0FBNjcwMDVDOTBBMiAvKiBKU05hbWVkTm9kZU1h
cEN1c3RvbS5jcHAgKi87IH07CiAJCUJDRDlDMjY0MEMxN0FBNjcwMDVDOTBBMiAvKiBKU05vZGVD
dXN0b20uY3BwIGluIFNvdXJjZXMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxlUmVmID0g
QkNEOUMyNjAwQzE3QUE2NzAwNUM5MEEyIC8qIEpTTm9kZUN1c3RvbS5jcHAgKi87IH07CiAJCUJD
RDlDMjY1MEMxN0FBNjcwMDVDOTBBMiAvKiBKU05vZGVMaXN0Q3VzdG9tLmNwcCBpbiBTb3VyY2Vz
ICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDlDMjYxMEMxN0FBNjcwMDVD
OTBBMiAvKiBKU05vZGVMaXN0Q3VzdG9tLmNwcCAqLzsgfTsKLQkJQkNEOUMyNzAwQzE3QUE4MTAw
NUM5MEEyIC8qIEpTRXZlbnRUYXJnZXROb2RlLmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBC
WEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDlDMjZBMEMxN0FBODEwMDVDOTBBMiAvKiBKU0V2ZW50
VGFyZ2V0Tm9kZS5jcHAgKi87IH07Ci0JCUJDRDlDMjcxMEMxN0FBODEwMDVDOTBBMiAvKiBKU0V2
ZW50VGFyZ2V0Tm9kZS5oIGluIEhlYWRlcnMgKi8gPSB7aXNhID0gUEJYQnVpbGRGaWxlOyBmaWxl
UmVmID0gQkNEOUMyNkIwQzE3QUE4MTAwNUM5MEEyIC8qIEpTRXZlbnRUYXJnZXROb2RlLmggKi87
IH07CiAJCUJDRDlDMjcyMEMxN0FBODEwMDVDOTBBMiAvKiBKU05hbWVkTm9kZXNDb2xsZWN0aW9u
LmNwcCBpbiBTb3VyY2VzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDlD
MjZDMEMxN0FBODEwMDVDOTBBMiAvKiBKU05hbWVkTm9kZXNDb2xsZWN0aW9uLmNwcCAqLzsgfTsK
IAkJQkNEOUMyNzMwQzE3QUE4MTAwNUM5MEEyIC8qIEpTTmFtZWROb2Rlc0NvbGxlY3Rpb24uaCBp
biBIZWFkZXJzICovID0ge2lzYSA9IFBCWEJ1aWxkRmlsZTsgZmlsZVJlZiA9IEJDRDlDMjZEMEMx
N0FBODEwMDVDOTBBMiAvKiBKU05hbWVkTm9kZXNDb2xsZWN0aW9uLmggKi87IH07CiAJCUJDRDlD
MkMwMEMxN0I2OUUwMDVDOTBBMiAvKiBKU05hbWVkTm9kZU1hcC5jcHAgaW4gU291cmNlcyAqLyA9
IHtpc2EgPSBQQlhCdWlsZEZpbGU7IGZpbGVSZWYgPSBCQ0Q5QzJCQzBDMTdCNjlFMDA1QzkwQTIg
LyogSlNOYW1lZE5vZGVNYXAuY3BwICovOyB9OwpAQCAtNzcyNSw3ICs3NzI2LDYgQEAKIAkJQjI1
NTk5MjIwRDAwRDhCOTAwQkI4MjVDIC8qIFNWR1Jlc291cmNlTWFya2VyLmggKi8gPSB7aXNhID0g
UEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0g
c291cmNlY29kZS5jLmg7IHBhdGggPSBTVkdSZXNvdXJjZU1hcmtlci5oOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCMjU1OTkyMzBEMDBEOEI5MDBCQjgyNUMgLyogU1ZHUmVzb3VyY2VN
YXNrZXIuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR1Jlc291
cmNlTWFza2VyLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI1NTk5MjQwRDAw
RDhCOTAwQkI4MjVDIC8qIFNWR1Jlc291cmNlTWFza2VyLmggKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jLmg7IHBhdGggPSBTVkdSZXNvdXJjZU1hc2tlci5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwotCQlCMjVCRTUwRTBEMDZCNzA4MDBCNTI0QzYgLyogSlNFdmVudFRhcmdldEJhc2UuY3Bw
ICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25v
d25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTRXZlbnRUYXJnZXRCYXNl
LmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI1QkU1MEYwRDA2QjcwODAwQjUy
NEM2IC8qIEpTRXZlbnRUYXJnZXRCYXNlLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsg
ZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBh
dGggPSBKU0V2ZW50VGFyZ2V0QmFzZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlC
MjVERkFBRTBCMkUyOTI5MDAwRTY1MTAgLyogSlNTVkdNYXRyaXhDdXN0b20uY3BwICovID0ge2lz
YSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlw
ZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IEpTU1ZHTWF0cml4Q3VzdG9tLmNwcDsgc291
cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI2MkI4MDMwRDFGMzJEMDAwMTU4RjA5IC8qIFNW
R0ZvbnQuY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDMw
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IFNWR0ZvbnQu
Y3BwOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwpAQCAtNzc5Myw3ICs3NzkzLDYgQEAKIAkJ
QjI3QjI4MzMwQ0VGMEMzNTAwRDM5RDU0IC8qIERPTVNWR01pc3NpbmdHbHlwaEVsZW1lbnQuaCAq
LyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3du
RmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IERPTVNWR01pc3NpbmdHbHlwaEVsZW1l
bnQuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3QjI4MzQwQ0VGMEMzNTAwRDM5
RDU0IC8qIERPTVNWR01pc3NpbmdHbHlwaEVsZW1lbnQubW0gKi8gPSB7aXNhID0gUEJYRmlsZVJl
ZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAub2JqY3BwOyBwYXRoID0gRE9NU1ZHTWlzc2luZ0dseXBoRWxlbWVudC5tbTsgc291cmNl
VHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI3QjI4MzUwQ0VGMEMzNTAwRDM5RDU0IC8qIERPTVNW
R01pc3NpbmdHbHlwaEVsZW1lbnRJbnRlcm5hbC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVu
Y2U7IGZpbGVFbmNvZGluZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5o
OyBwYXRoID0gRE9NU1ZHTWlzc2luZ0dseXBoRWxlbWVudEludGVybmFsLmg7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07Ci0JCUIyOEJDMzE5MEQxMzVFNTQwMENEQkEyNyAvKiBKU0V2ZW50VGFy
Z2V0QmFzZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2Rpbmcg
PSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpTRXZlbnRU
YXJnZXRCYXNlLmx1dC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjhDNkExRTBE
MDBDNDQ4MDAzMzRBQTQgLyogU1ZHRG9jdW1lbnRFeHRlbnNpb25zLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdEb2N1bWVudEV4dGVuc2lvbnMuY3BwOyBzb3Vy
Y2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCMjhDNkExRjBEMDBDNDQ4MDAzMzRBQTQgLyogU1ZH
RG9jdW1lbnRFeHRlbnNpb25zLmggKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVu
Y29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBT
VkdEb2N1bWVudEV4dGVuc2lvbnMuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQjI4
QzZBMjAwRDAwQzQ0ODAwMzM0QUE0IC8qIFNWR0ltYWdlTG9hZGVyLmNwcCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBz
b3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBTVkdJbWFnZUxvYWRlci5jcHA7IHNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7IH07CkBAIC04MjU1LDcgKzgyNTQsMTAgQEAKIAkJQkMzQTQ0REQwRTI2RDIw
MjAwQzE0REZBIC8qIE5TUmVzb2x2ZXIuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IE5TUmVz
b2x2ZXIuaWRsOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzNBNDRFMDBFMjZEMjFC
MDBDMTRERkEgLyogSlNOU1Jlc29sdmVyLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNw
cDsgcGF0aCA9IEpTTlNSZXNvbHZlci5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJ
CUJDM0E0NEUxMEUyNkQyMUIwMEMxNERGQSAvKiBKU05TUmVzb2x2ZXIuaCAqLyA9IHtpc2EgPSBQ
QlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNv
dXJjZWNvZGUuYy5oOyBwYXRoID0gSlNOU1Jlc29sdmVyLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3Vw
PiI7IH07Ci0JCUJDM0JBMDRDMEU4QzQ2REEwMEZDNUQyMCAvKiBKU0V2ZW50VGFyZ2V0Tm9kZS5s
dXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNFdmVudFRhcmdldE5vZGUu
bHV0Lmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDM0I3QUVGMEU5MTlBREEwMEQ1
NDA2NSAvKiBFdmVudFRhcmdldE5vZGUuaWRsICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7
IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gdGV4dDsgcGF0aCA9IEV2ZW50
VGFyZ2V0Tm9kZS5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CisJCUJDM0I3QUYxMEU5
MTlDQTkwMEQ1NDA2NSAvKiBKU0V2ZW50VGFyZ2V0Tm9kZS5jcHAgKi8gPSB7aXNhID0gUEJYRmls
ZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vj
b2RlLmNwcC5jcHA7IHBhdGggPSBKU0V2ZW50VGFyZ2V0Tm9kZS5jcHA7IHNvdXJjZVRyZWUgPSAi
PGdyb3VwPiI7IH07CisJCUJDM0I3QUYyMEU5MTlDQTkwMEQ1NDA2NSAvKiBKU0V2ZW50VGFyZ2V0
Tm9kZS5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxh
c3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jLmg7IHBhdGggPSBKU0V2ZW50VGFyZ2V0Tm9k
ZS5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzNCN0IyMDBFOTFBQUY0MDBENTQw
NjUgLyogSlNFdmVudFRhcmdldE5vZGVDdXN0b20uY3BwICovID0ge2lzYSA9IFBCWEZpbGVSZWZl
cmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNFdmVudFRhcmdldE5vZGVDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0g
Ijxncm91cD4iOyB9OwogCQlCQzNCQTA0RDBFOEM0NkRBMDBGQzVEMjAgLyogSlNFdmVudFRhcmdl
dFNWR0VsZW1lbnRJbnN0YW5jZS5sdXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRo
ID0gSlNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZS5sdXQuaDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkMzQzM5QjQwQzBEM0Q4RDAwNUY0RDdBIC8qIEpTTWVkaWFMaXN0LmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU01lZGlhTGlzdC5jcHA7
IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDM0MzOUI1MEMwRDNEOEQwMDVGNEQ3QSAv
KiBKU01lZGlhTGlzdC5oICovID0ge2lzYSA9IFBCWEZpbGVSZWZlcmVuY2U7IGZpbGVFbmNvZGlu
ZyA9IDMwOyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gSlNNZWRp
YUxpc3QuaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKQEAgLTgzNTgsNiArODM2MCw4IEBA
CiAJCUJDNUVDMTc2MEE1MDdFM0UwMDYwMDdGNSAvKiB2aWV3LXNvdXJjZS5jc3MgKi8gPSB7aXNh
ID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBl
ID0gdGV4dDsgcGF0aCA9ICJ2aWV3LXNvdXJjZS5jc3MiOyBzb3VyY2VUcmVlID0gIjxncm91cD4i
OyB9OwogCQlCQzYwNDlDQjBEQjU2MEMyMDAyMDQ3MzkgLyogQ1NTQ2FudmFzVmFsdWUuaCAqLyA9
IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxl
VHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gQ1NTQ2FudmFzVmFsdWUuaDsgc291cmNlVHJl
ZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkM2MDRBNDIwREI1NjM0RTAwMjA0NzM5IC8qIENTU0NhbnZh
c1ZhbHVlLmNwcCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0
OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuY3BwLmNwcDsgcGF0aCA9IENTU0NhbnZh
c1ZhbHVlLmNwcDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKKwkJQkM2MDkwMUQwRTkxQjhF
QzAwMEM2OEI1IC8qIEpTRXZlbnRUYXJnZXQuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNl
OyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBw
YXRoID0gSlNFdmVudFRhcmdldC5oOyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OworCQlCQzYw
OTAxRTBFOTFCOEVDMDAwQzY4QjUgLyogSlNFdmVudFRhcmdldC5jcHAgKi8gPSB7aXNhID0gUEJY
RmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3Vy
Y2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU0V2ZW50VGFyZ2V0LmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKIAkJQkM2MEQ2RTgwRDI4RDgzNDAwQjk5MThGIC8qIERPTUNvcmVFeGNlcHRp
b24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSA0OyBsYXN0
S25vd25GaWxlVHlwZSA9IHNvdXJjZWNvZGUuYy5oOyBwYXRoID0gRE9NQ29yZUV4Y2VwdGlvbi5o
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQzYwRDZFQjBEMjhEOTk5MDBCOTkxOEYg
LyogRE9NQ29yZUV4Y2VwdGlvbi5pZGwgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gNDsgbGFzdEtub3duRmlsZVR5cGUgPSB0ZXh0OyBwYXRoID0gRE9NQ29yZUV4
Y2VwdGlvbi5pZGw7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDNjBEN0JFMEQyOUE0
NjMwMEI5OTE4RiAvKiBKU0RPTUNvcmVFeGNlcHRpb24uY3BwICovID0ge2lzYSA9IFBCWEZpbGVS
ZWZlcmVuY2U7IGZpbGVFbmNvZGluZyA9IDQ7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29k
ZS5jcHAuY3BwOyBwYXRoID0gSlNET01Db3JlRXhjZXB0aW9uLmNwcDsgc291cmNlVHJlZSA9ICI8
Z3JvdXA+IjsgfTsKQEAgLTg1MzAsOCArODUzNCw2IEBACiAJCUJDRDlDMjVGMEMxN0FBNjcwMDVD
OTBBMiAvKiBKU05hbWVkTm9kZU1hcEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVy
ZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5j
cHAuY3BwOyBwYXRoID0gSlNOYW1lZE5vZGVNYXBDdXN0b20uY3BwOyBzb3VyY2VUcmVlID0gIjxn
cm91cD4iOyB9OwogCQlCQ0Q5QzI2MDBDMTdBQTY3MDA1QzkwQTIgLyogSlNOb2RlQ3VzdG9tLmNw
cCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtu
b3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05vZGVDdXN0b20uY3Bw
OyBzb3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwogCQlCQ0Q5QzI2MTBDMTdBQTY3MDA1QzkwQTIg
LyogSlNOb2RlTGlzdEN1c3RvbS5jcHAgKi8gPSB7aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmls
ZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVUeXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBw
YXRoID0gSlNOb2RlTGlzdEN1c3RvbS5jcHA7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07Ci0J
CUJDRDlDMjZBMEMxN0FBODEwMDVDOTBBMiAvKiBKU0V2ZW50VGFyZ2V0Tm9kZS5jcHAgKi8gPSB7
aXNhID0gUEJYRmlsZVJlZmVyZW5jZTsgZmlsZUVuY29kaW5nID0gMzA7IGxhc3RLbm93bkZpbGVU
eXBlID0gc291cmNlY29kZS5jcHAuY3BwOyBwYXRoID0gSlNFdmVudFRhcmdldE5vZGUuY3BwOyBz
b3VyY2VUcmVlID0gIjxncm91cD4iOyB9OwotCQlCQ0Q5QzI2QjBDMTdBQTgxMDA1QzkwQTIgLyog
SlNFdmVudFRhcmdldE5vZGUuaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5j
b2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0aCA9IEpT
RXZlbnRUYXJnZXROb2RlLmg7IHNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7IH07CiAJCUJDRDlDMjZD
MEMxN0FBODEwMDVDOTBBMiAvKiBKU05hbWVkTm9kZXNDb2xsZWN0aW9uLmNwcCAqLyA9IHtpc2Eg
PSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUg
PSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05hbWVkTm9kZXNDb2xsZWN0aW9uLmNwcDsg
c291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsKIAkJQkNEOUMyNkQwQzE3QUE4MTAwNUM5MEEyIC8q
IEpTTmFtZWROb2Rlc0NvbGxlY3Rpb24uaCAqLyA9IHtpc2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBm
aWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5cGUgPSBzb3VyY2Vjb2RlLmMuaDsgcGF0
aCA9IEpTTmFtZWROb2Rlc0NvbGxlY3Rpb24uaDsgc291cmNlVHJlZSA9ICI8Z3JvdXA+IjsgfTsK
IAkJQkNEOUMyQkMwQzE3QjY5RTAwNUM5MEEyIC8qIEpTTmFtZWROb2RlTWFwLmNwcCAqLyA9IHtp
c2EgPSBQQlhGaWxlUmVmZXJlbmNlOyBmaWxlRW5jb2RpbmcgPSAzMDsgbGFzdEtub3duRmlsZVR5
cGUgPSBzb3VyY2Vjb2RlLmNwcC5jcHA7IHBhdGggPSBKU05hbWVkTm9kZU1hcC5jcHA7IHNvdXJj
ZVRyZWUgPSAiPGdyb3VwPiI7IH07CkBAIC0xMTc1NywxMiArMTE3NTksMTIgQEAKIAkJQTgzQjc5
MTIwQ0NCMDAzRjAwMEIwODI1IC8qIEV2ZW50cyAqLyA9IHsKIAkJCWlzYSA9IFBCWEdyb3VwOwog
CQkJY2hpbGRyZW4gPSAoCisJCQkJQkMzQjdBRjEwRTkxOUNBOTAwRDU0MDY1IC8qIEpTRXZlbnRU
YXJnZXROb2RlLmNwcCAqLywKKwkJCQlCQzNCN0FGMjBFOTE5Q0E5MDBENTQwNjUgLyogSlNFdmVu
dFRhcmdldE5vZGUuaCAqLywKIAkJCQkxNEU4Mzc4MzA5Rjg1RDFDMDBCODVBRTQgLyogSlNFdmVu
dC5jcHAgKi8sCiAJCQkJMTRFODM3OEQwOUY4NUQ0RjAwQjg1QUU0IC8qIEpTRXZlbnQuaCAqLywK
IAkJCQlCQzYwRDlCRDBEMkEyNjlBMDBCOTkxOEYgLyogSlNFdmVudEV4Y2VwdGlvbi5jcHAgKi8s
CiAJCQkJQkM2MEQ5QkUwRDJBMjY5QTAwQjk5MThGIC8qIEpTRXZlbnRFeGNlcHRpb24uaCAqLywK
LQkJCQlCMjhCQzMxOTBEMTM1RTU0MDBDREJBMjcgLyogSlNFdmVudFRhcmdldEJhc2UubHV0Lmgg
Ki8sCi0JCQkJQkMzQkEwNEMwRThDNDZEQTAwRkM1RDIwIC8qIEpTRXZlbnRUYXJnZXROb2RlLmx1
dC5oICovLAogCQkJCUJDM0JBMDREMEU4QzQ2REEwMEZDNUQyMCAvKiBKU0V2ZW50VGFyZ2V0U1ZH
RWxlbWVudEluc3RhbmNlLmx1dC5oICovLAogCQkJCUE4NjYyOUNFMDlEQTJCNDcwMDk2MzNBNSAv
KiBKU0tleWJvYXJkRXZlbnQuY3BwICovLAogCQkJCUE4NjYyOUNEMDlEQTJCNDcwMDk2MzNBNSAv
KiBKU0tleWJvYXJkRXZlbnQuaCAqLywKQEAgLTEyNzA4LDEwICsxMjcxMCw3IEBACiAJCQkJQkNC
RkI1M0IwRENEMjlDRjAwMTlCM0U1IC8qIEpTRE9NV2luZG93U2hlbGwuaCAqLywKIAkJCQk5M0I3
MEQ0RDA5RUIwQzdDMDA5RDg0NjggLyogSlNFdmVudExpc3RlbmVyLmNwcCAqLywKIAkJCQk5M0I3
MEQ0RTA5RUIwQzdDMDA5RDg0NjggLyogSlNFdmVudExpc3RlbmVyLmggKi8sCi0JCQkJQjI1QkU1
MEUwRDA2QjcwODAwQjUyNEM2IC8qIEpTRXZlbnRUYXJnZXRCYXNlLmNwcCAqLywKIAkJCQlCMjVC
RTUwRjBEMDZCNzA4MDBCNTI0QzYgLyogSlNFdmVudFRhcmdldEJhc2UuaCAqLywKLQkJCQlCQ0Q5
QzI2QTBDMTdBQTgxMDA1QzkwQTIgLyogSlNFdmVudFRhcmdldE5vZGUuY3BwICovLAotCQkJCUJD
RDlDMjZCMEMxN0FBODEwMDVDOTBBMiAvKiBKU0V2ZW50VGFyZ2V0Tm9kZS5oICovLAogCQkJCTA4
NDE3NEYxMEU4NUNFRDgwMEFGQjFDNSAvKiBKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNl
LmNwcCAqLywKIAkJCQkwODQxNzRGMjBFODVDRUQ4MDBBRkIxQzUgLyogSlNFdmVudFRhcmdldFNW
R0VsZW1lbnRJbnN0YW5jZS5oICovLAogCQkJCUJDNkRDN0EwMEMxQTRCRkEwMDRFMjAxNyAvKiBK
U0hUTUxBbGxDb2xsZWN0aW9uLmggKi8sCkBAIC0xMjczOCw3ICsxMjczNyw2IEBACiAJCQkJQzA5
MTU4ODkwREI0MjA5MjAwRTU1QUY0IC8qIEpTUXVhcmFudGluZWRPYmplY3RXcmFwcGVyLmggKi8s
CiAJCQkJQkMzNDUyNDEwRDdFMDBFQTAwMTY1NzRBIC8qIEpTUkdCQ29sb3IuY3BwICovLAogCQkJ
CUJDMzQ1MjQyMEQ3RTAwRUEwMDE2NTc0QSAvKiBKU1JHQkNvbG9yLmggKi8sCi0JCQkJMDhBNDhB
NkQwRTg2Q0Y2RDAwRTIyNUREIC8qIEpTU1ZHRWxlbWVudEluc3RhbmNlQ3VzdG9tLmNwcCAqLywK
IAkJCQlCMjExMjdBNTBCMzE4Njc3MDAwOUJFNTMgLyogSlNTVkdQT0RUeXBlV3JhcHBlci5oICov
LAogCQkJCUJDMzQ4QkU3MERCODAzNTQwMDRBQkFCOSAvKiBKU1hNTEh0dHBSZXF1ZXN0Q29uc3Ry
dWN0b3IuY3BwICovLAogCQkJCUJDMzQ4QkU4MERCODAzNTQwMDRBQkFCOSAvKiBKU1hNTEh0dHBS
ZXF1ZXN0Q29uc3RydWN0b3IuaCAqLywKQEAgLTEyNzUyLDYgKzEyNzUwLDggQEAKIAkJCQlBODNF
MUM3MjBFNDkwNDJCMDAxNDBCOUMgLyogU2NyaXB0Q29udHJvbGxlck1hYy5tbSAqLywKIAkJCQk5
M0I3MEQ1NDA5RUIwQzdDMDA5RDg0NjggLyogU2NyaXB0Q29udHJvbGxlci5oICovLAogCQkJCTY1
NDg4RDZBMERENUE4M0QwMDlEODNCMiAvKiBTdHJpbmdTb3VyY2VQcm92aWRlci5oICovLAorCQkJ
CUJDNjA5MDFEMEU5MUI4RUMwMDBDNjhCNSAvKiBKU0V2ZW50VGFyZ2V0LmggKi8sCisJCQkJQkM2
MDkwMUUwRTkxQjhFQzAwMEM2OEI1IC8qIEpTRXZlbnRUYXJnZXQuY3BwICovLAogCQkJKTsKIAkJ
CXBhdGggPSBqczsKIAkJCXNvdXJjZVRyZWUgPSAiPGdyb3VwPiI7CkBAIC0xMjgyOSw2ICsxMjgy
OSw3IEBACiAJCQkJNjUyRkJCQkIwREUyN0NCNjAwMDFEMzg2IC8qIEpTRE9NV2luZG93Q3VzdG9t
LmggKi8sCiAJCQkJQkMyRUQ1NTQwQzZCOUJEMzAwOTIwQkZGIC8qIEpTRWxlbWVudEN1c3RvbS5j
cHAgKi8sCiAJCQkJQkNFRkFGNEQwQzMxN0U2OTAwRkE4MUY2IC8qIEpTRXZlbnRDdXN0b20uY3Bw
ICovLAorCQkJCUJDM0I3QjIwMEU5MUFBRjQwMEQ1NDA2NSAvKiBKU0V2ZW50VGFyZ2V0Tm9kZUN1
c3RvbS5jcHAgKi8sCiAJCQkJQkNFN0IxOTIwRDRFODY5NjAwNzVBNTM5IC8qIEpTSGlzdG9yeUN1
c3RvbS5jcHAgKi8sCiAJCQkJQkM0RURFRjMwQzA4RjNGQjAwN0VERDQ5IC8qIEpTSFRNTEFwcGxl
dEVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCUJDQ0JBRDNBMEMxOEJGRjgwMENFODkwRiAvKiBK
U0hUTUxDb2xsZWN0aW9uQ3VzdG9tLmNwcCAqLywKQEAgLTEyODM5LDYgKzEyODQwLDcgQEAKIAkJ
CQlCQzJFRDdBNDBDNkMwRjM2MDA5MjBCRkYgLyogSlNIVE1MRnJhbWVFbGVtZW50Q3VzdG9tLmNw
cCAqLywKIAkJCQlCQ0Q0MUFCQTBDMDYwREU4MDBDMEU0NDYgLyogSlNIVE1MRnJhbWVTZXRFbGVt
ZW50Q3VzdG9tLmNwcCAqLywKIAkJCQlCQzJFRDY0RjBDNkJDNDhDMDA5MjBCRkYgLyogSlNIVE1M
SUZyYW1lRWxlbWVudEN1c3RvbS5jcHAgKi8sCisJCQkJQkNDNDM4NzcwRTg4NkNDNzAwNTMzREQ1
IC8qIEpTSFRNTElucHV0RWxlbWVudEN1c3RvbS5jcHAgKi8sCiAJCQkJQkMzMDVDQTMwQzA3ODFC
QjAwQ0QyMEYwIC8qIEpTSFRNTE9iamVjdEVsZW1lbnRDdXN0b20uY3BwICovLAogCQkJCTQ0OEFE
MjdBMEE0ODEzNzkwMDIzRDE3OSAvKiBKU0hUTUxPcHRpb25zQ29sbGVjdGlvbkN1c3RvbS5jcHAg
Ki8sCiAJCQkJQkMxN0Y5NjUwQjY0RUJCODAwNEE2NUNCIC8qIEpTSFRNTFNlbGVjdEVsZW1lbnRD
dXN0b20uY3BwICovLApAQCAtMTI4NjEsNiArMTI4NjMsNyBAQAogCQkJCTUxRDBDNTE1MERBQTkw
QjcwMDNCMzgzMSAvKiBKU1N0b3JhZ2VDdXN0b20uY3BwICovLAogCQkJCUJDOThBMjdDMEMwQzk5
NTAwMDRCRUJGNyAvKiBKU1N0eWxlU2hlZXRDdXN0b20uY3BwICovLAogCQkJCUE4NEVCRDc3MENC
OEM4OTIwMDA3OTYwOSAvKiBKU1N0eWxlU2hlZXRMaXN0Q3VzdG9tLmNwcCAqLywKKwkJCQkwOEE0
OEE2RDBFODZDRjZEMDBFMjI1REQgLyogSlNTVkdFbGVtZW50SW5zdGFuY2VDdXN0b20uY3BwICov
LAogCQkJCTA4RTRGRTQ1MEUyQkQ0MTQwMEY0Q0FFMCAvKiBKU1NWR0xlbmd0aEN1c3RvbS5jcHAg
Ki8sCiAJCQkJQjI1REZBQUUwQjJFMjkyOTAwMEU2NTEwIC8qIEpTU1ZHTWF0cml4Q3VzdG9tLmNw
cCAqLywKIAkJCQlCMkM5NkQ4QzBCM0FGMkI3MDA1RTgwRUMgLyogSlNTVkdQYXRoU2VnQ3VzdG9t
LmNwcCAqLywKQEAgLTEyODcyLDcgKzEyODc1LDYgQEAKIAkJCQlCQzM0OEJCRDBEQjdGNTMxMDA0
QUJBQjkgLyogSlNYTUxIdHRwUmVxdWVzdEN1c3RvbS5jcHAgKi8sCiAJCQkJQkNERkQ0OTEwRTMw
NTZCRDAwOUQxMEFEIC8qIEpTWE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0b20uY3BwICovLAogCQkJ
CUJDRUZFMUU0MERDQTVGMzMwMDczOTIxOSAvKiBKU1hTTFRQcm9jZXNzb3JDdXN0b20uY3BwICov
LAotCQkJCUJDQzQzODc3MEU4ODZDQzcwMDUzM0RENSAvKiBKU0hUTUxJbnB1dEVsZW1lbnRDdXN0
b20uY3BwICovLAogCQkJKTsKIAkJCW5hbWUgPSBDdXN0b207CiAJCQlzb3VyY2VUcmVlID0gIjxn
cm91cD4iOwpAQCAtMTM4MzksNiArMTM4NDEsNyBAQAogCQkJCTkzRUVDMUY3MDlDMjg3NzcwMEM1
MTVEMSAvKiBXaGVlbEV2ZW50LmlkbCAqLywKIAkJCQlGNTIzRDMwOTAyREU0NDc2MDE4NjM1Q0Eg
LyogWE1MVG9rZW5pemVyLmNwcCAqLywKIAkJCQlGNTIzRDMwQTAyREU0NDc2MDE4NjM1Q0EgLyog
WE1MVG9rZW5pemVyLmggKi8sCisJCQkJQkMzQjdBRUYwRTkxOUFEQTAwRDU0MDY1IC8qIEV2ZW50
VGFyZ2V0Tm9kZS5pZGwgKi8sCiAJCQkpOwogCQkJcGF0aCA9IGRvbTsKIAkJCXNvdXJjZVRyZWUg
PSAiPGdyb3VwPiI7CkBAIC0xNDkwMSw4ICsxNDkwNCw2IEBACiAJCQkJOTNGOUI3NzUwQkE1RkRE
RDAwODU0MDY0IC8qIEpTRW50aXR5UmVmZXJlbmNlLmggaW4gSGVhZGVycyAqLywKIAkJCQkxNEU4
Mzc4RTA5Rjg1RDRGMDBCODVBRTQgLyogSlNFdmVudC5oIGluIEhlYWRlcnMgKi8sCiAJCQkJQjI1
QkU1MTEwRDA2QjcwODAwQjUyNEM2IC8qIEpTRXZlbnRUYXJnZXRCYXNlLmggaW4gSGVhZGVycyAq
LywKLQkJCQlCMjhCQzMxQTBEMTM1RTU0MDBDREJBMjcgLyogSlNFdmVudFRhcmdldEJhc2UubHV0
LmggaW4gSGVhZGVycyAqLywKLQkJCQlCQ0Q5QzI3MTBDMTdBQTgxMDA1QzkwQTIgLyogSlNFdmVu
dFRhcmdldE5vZGUuaCBpbiBIZWFkZXJzICovLAogCQkJCUJDNkRDN0ExMEMxQTRCRkEwMDRFMjAx
NyAvKiBKU0hUTUxBbGxDb2xsZWN0aW9uLmggaW4gSGVhZGVycyAqLywKIAkJCQkxQTRBMkRGMDBB
MUI4NTJBMDBDODA3RjggLyogSlNIVE1MQW5jaG9yRWxlbWVudC5oIGluIEhlYWRlcnMgKi8sCiAJ
CQkJMUE0QTJERjIwQTFCODUyQTAwQzgwN0Y4IC8qIEpTSFRNTEFwcGxldEVsZW1lbnQuaCBpbiBI
ZWFkZXJzICovLApAQCAtMTU5NDYsOSArMTU5NDcsMTAgQEAKIAkJCQkwOEE0OEE3QTBFODZDRjhD
MDBFMjI1REQgLyogRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2UuaCBpbiBIZWFkZXJzICov
LAogCQkJCTkzMEIzQkUyMEU4ODQ5MjEwMDk3NzBDNSAvKiBKU0NhbnZhc1BpeGVsQXJyYXlDdXN0
b20uaCBpbiBIZWFkZXJzICovLAogCQkJCUJDRjkzN0U3MEU4QjJFOTUwMDVDN0FCNyAvKiBKU0RP
TVdpbmRvd0Jhc2UubHV0LmggaW4gSGVhZGVycyAqLywKLQkJCQlCQzNCQTA0RTBFOEM0NkRBMDBG
QzVEMjAgLyogSlNFdmVudFRhcmdldE5vZGUubHV0LmggaW4gSGVhZGVycyAqLywKIAkJCQlCQzNC
QTA0RjBFOEM0NkRBMDBGQzVEMjAgLyogSlNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZS5s
dXQuaCBpbiBIZWFkZXJzICovLAogCQkJCTYzRjVENEY3MEU4QzRCNzEwMEMwQkQwNCAvKiBFbGVt
ZW50UmFyZURhdGEuaCBpbiBIZWFkZXJzICovLAorCQkJCUJDM0I3QUY0MEU5MTlDQTkwMEQ1NDA2
NSAvKiBKU0V2ZW50VGFyZ2V0Tm9kZS5oIGluIEhlYWRlcnMgKi8sCisJCQkJQkM2MDkwMUYwRTkx
QjhFQzAwMEM2OEI1IC8qIEpTRXZlbnRUYXJnZXQuaCBpbiBIZWFkZXJzICovLAogCQkJKTsKIAkJ
CXJ1bk9ubHlGb3JEZXBsb3ltZW50UG9zdHByb2Nlc3NpbmcgPSAwOwogCQl9OwpAQCAtMTYwNjUs
NiArMTYwNjcsNyBAQAogCQkJCUJDRUY0NTQwMEU2NzZBQzEwMDFDMTI4NyAvKiBUZXh0TWV0cmlj
cy5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJCUUxQURFQ0M3MEU3NkFEMUYwMDRBMUE1RSAvKiBN
ZXNzYWdlUG9ydC5pZGwgaW4gUmVzb3VyY2VzICovLAogCQkJCUUxQURFQ0QxMEU3NkFEQUIwMDRB
MUE1RSAvKiBNZXNzYWdlQ2hhbm5lbC5pZGwgaW4gUmVzb3VyY2VzICovLAorCQkJCUJDM0I3QUYw
MEU5MTlBREEwMEQ1NDA2NSAvKiBFdmVudFRhcmdldE5vZGUuaWRsIGluIFJlc291cmNlcyAqLywK
IAkJCSk7CiAJCQlydW5Pbmx5Rm9yRGVwbG95bWVudFBvc3Rwcm9jZXNzaW5nID0gMDsKIAkJfTsK
QEAgLTE2Nzg1LDggKzE2Nzg4LDYgQEAKIAkJCQk5M0Y5Qjc3NDBCQTVGRERDMDA4NTQwNjQgLyog
SlNFbnRpdHlSZWZlcmVuY2UuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJMTRFODM3ODQwOUY4NUQx
QzAwQjg1QUU0IC8qIEpTRXZlbnQuY3BwIGluIFNvdXJjZXMgKi8sCiAJCQkJQkNFRkFGNEUwQzMx
N0U2OTAwRkE4MUY2IC8qIEpTRXZlbnRDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCi0JCQkJQjI1
QkU1MTAwRDA2QjcwODAwQjUyNEM2IC8qIEpTRXZlbnRUYXJnZXRCYXNlLmNwcCBpbiBTb3VyY2Vz
ICovLAotCQkJCUJDRDlDMjcwMEMxN0FBODEwMDVDOTBBMiAvKiBKU0V2ZW50VGFyZ2V0Tm9kZS5j
cHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTRBMkRFRjBBMUI4NTJBMDBDODA3RjggLyogSlNIVE1M
QW5jaG9yRWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQkxQTRBMkRGMTBBMUI4NTJBMDBD
ODA3RjggLyogSlNIVE1MQXBwbGV0RWxlbWVudC5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlCQzRF
REVGNDBDMDhGM0ZCMDA3RURENDkgLyogSlNIVE1MQXBwbGV0RWxlbWVudEN1c3RvbS5jcHAgaW4g
U291cmNlcyAqLywKQEAgLTE3Nzk3LDYgKzE3Nzk4LDkgQEAKIAkJCQk5MzUwRTcwRDBFODc1MDBC
MDAxODlGRkYgLyogSlNIVE1MQWxsQ29sbGVjdGlvbi5jcHAgaW4gU291cmNlcyAqLywKIAkJCQlC
Q0M0Mzg3ODBFODg2Q0M3MDA1MzNERDUgLyogSlNIVE1MSW5wdXRFbGVtZW50Q3VzdG9tLmNwcCBp
biBTb3VyY2VzICovLAogCQkJCUJDMjQ0MUM0MEU4QjY1RDAwMDU1MzIwRiAvKiBTY3JvbGxWaWV3
LmNwcCBpbiBTb3VyY2VzICovLAorCQkJCUJDM0I3QUYzMEU5MTlDQTkwMEQ1NDA2NSAvKiBKU0V2
ZW50VGFyZ2V0Tm9kZS5jcHAgaW4gU291cmNlcyAqLywKKwkJCQlCQzNCN0IyMTBFOTFBQUY0MDBE
NTQwNjUgLyogSlNFdmVudFRhcmdldE5vZGVDdXN0b20uY3BwIGluIFNvdXJjZXMgKi8sCisJCQkJ
QkM2MDkwMjAwRTkxQjhFQzAwMEM2OEI1IC8qIEpTRXZlbnRUYXJnZXQuY3BwIGluIFNvdXJjZXMg
Ki8sCiAJCQkpOwogCQkJcnVuT25seUZvckRlcGxveW1lbnRQb3N0cHJvY2Vzc2luZyA9IDA7CiAJ
CX07CkluZGV4OiBiaW5kaW5ncy9qcy9KU0V2ZW50TGlzdGVuZXIuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGJpbmRpbmdzL2pzL0pTRXZlbnRMaXN0ZW5lci5jcHAJKHJldmlzaW9uIDM3MDQ1KQorKysgYmlu
ZGluZ3MvanMvSlNFdmVudExpc3RlbmVyLmNwcAkod29ya2luZyBjb3B5KQpAQCAtMzAsNiArMzAs
NyBAQAogI2luY2x1ZGUgIkZyYW1lTG9hZGVyLmgiCiAjaW5jbHVkZSAiSlNET01XaW5kb3cuaCIK
ICNpbmNsdWRlICJKU0V2ZW50LmgiCisjaW5jbHVkZSAiSlNFdmVudFRhcmdldC5oIgogI2luY2x1
ZGUgIkpTRXZlbnRUYXJnZXROb2RlLmgiCiAjaW5jbHVkZSAiU2NyaXB0Q29udHJvbGxlci5oIgog
I2luY2x1ZGUgPGtqcy9GdW5jdGlvbkNvbnN0cnVjdG9yLmg+CkluZGV4OiBiaW5kaW5ncy9qcy9K
U0V2ZW50VGFyZ2V0LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0
LmNwcAkocmV2aXNpb24gMCkKKysrIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXQuY3BwCShyZXZp
c2lvbiAwKQpAQCAtMCwwICsxLDc4IEBACisvKgorICogQ29weXJpZ2h0IChDKSAyMDA4IEFwcGxl
IEluYy4gQWxsIFJpZ2h0cyBSZXNlcnZlZC4KKyAqCisgKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNl
IGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1zLCB3aXRoIG9yIHdpdGhvdXQKKyAqIG1vZGlmaWNh
dGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRlZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9u
cworICogYXJlIG1ldDoKKyAqIDEuIFJlZGlzdHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0
IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBj
b25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIuCisgKiAyLiBSZWRpc3RyaWJ1
dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCByZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAor
ICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBk
aXNjbGFpbWVyIGluIHRoZQorICogICAgZG9jdW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJp
YWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3RyaWJ1dGlvbi4KKyAqCisgKiBUSElTIFNPRlRXQVJF
IElTIFBST1ZJREVEIEJZIEFQUExFIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1Mg
T1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhF
CisgKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZP
UiBBIFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBT
SEFMTCBBUFBMRSBJTkMuIE9SCisgKiBDT05UUklCVVRPUlMgQkUgTElBQkxFIEZPUiBBTlkgRElS
RUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKKyAqIEVYRU1QTEFSWSwgT1IgQ09O
U0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywKKyAqIFBS
T0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklDRVM7IExPU1MgT0YgVVNFLCBE
QVRBLCBPUgorICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJSVVBUSU9OKSBIT1dFVkVSIENB
VVNFRCBBTkQgT04gQU5ZIFRIRU9SWQorICogT0YgTElBQklMSVRZLCBXSEVUSEVSIElOIENPTlRS
QUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCisgKiAoSU5DTFVESU5HIE5FR0xJR0VOQ0Ug
T1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9GIFRIRSBVU0UKKyAqIE9GIFRI
SVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9TU0lCSUxJVFkgT0YgU1VDSCBE
QU1BR0UuIAorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0V2ZW50VGFy
Z2V0LmgiCisKKyNpbmNsdWRlICJEb2N1bWVudC5oIgorI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5l
ci5oIgorI2luY2x1ZGUgIkpTRXZlbnRUYXJnZXROb2RlLmgiCisjaW5jbHVkZSAiSlNNZXNzYWdl
UG9ydC5oIgorI2luY2x1ZGUgIkpTWE1MSHR0cFJlcXVlc3RVcGxvYWQuaCIKKworI2lmIEVOQUJM
RShTVkcpCisjaW5jbHVkZSAiRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2UuaCIKKyNpbmNs
dWRlICJKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlLmgiCisjZW5kaWYKKwordXNpbmcg
bmFtZXNwYWNlIEpTQzsKKworbmFtZXNwYWNlIFdlYkNvcmUgeworCitKU1ZhbHVlKiB0b0pTKEV4
ZWNTdGF0ZSogZXhlYywgRXZlbnRUYXJnZXQqIHRhcmdldCkKK3sKKyAgICBpZiAoIXRhcmdldCkK
KyAgICAgICAgcmV0dXJuIGpzTnVsbCgpOworICAgIAorI2lmIEVOQUJMRShTVkcpCisgICAgLy8g
U1ZHRWxlbWVudEluc3RhbmNlIHN1cHBvcnRzIGJvdGggdG9TVkdFbGVtZW50SW5zdGFuY2UgYW5k
IHRvTm9kZSBzaW5jZSBzbyBtdWNoIG1vdXNlIGhhbmRsaW5nIGNvZGUgZGVwZW5kcyBvbiB0b05v
ZGUgcmV0dXJuaW5nIGEgdmFsaWQgbm9kZS4KKyAgICBpZiAoU1ZHRWxlbWVudEluc3RhbmNlKiBp
bnN0YW5jZSA9IHRhcmdldC0+dG9TVkdFbGVtZW50SW5zdGFuY2UoKSkKKyAgICAgICAgcmV0dXJu
IHRvSlMoZXhlYywgaW5zdGFuY2UpOworI2VuZGlmCisgICAgCisgICAgaWYgKE5vZGUqIG5vZGUg
PSB0YXJnZXQtPnRvTm9kZSgpKQorICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBub2RlKTsKKwor
ICAgIGlmIChYTUxIdHRwUmVxdWVzdCogeGhyID0gdGFyZ2V0LT50b1hNTEh0dHBSZXF1ZXN0KCkp
CisgICAgICAgIC8vIFhNTEh0dHBSZXF1ZXN0IGlzIGFsd2F5cyBjcmVhdGVkIHZpYSBKUywgc28g
d2UgZG9uJ3QgbmVlZCB0byB1c2UgY2FjaGVET01PYmplY3QoKSBoZXJlLgorICAgICAgICByZXR1
cm4gZ2V0Q2FjaGVkRE9NT2JqZWN0V3JhcHBlcih4aHIpOworCisgICAgaWYgKFhNTEh0dHBSZXF1
ZXN0VXBsb2FkKiB1cGxvYWQgPSB0YXJnZXQtPnRvWE1MSHR0cFJlcXVlc3RVcGxvYWQoKSkKKyAg
ICAgICAgcmV0dXJuIHRvSlMoZXhlYywgdXBsb2FkKTsKKworI2lmIEVOQUJMRShPRkZMSU5FX1dF
Ql9BUFBMSUNBVElPTlMpCisgICAgaWYgKERPTUFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlID0gdGFy
Z2V0LT50b0RPTUFwcGxpY2F0aW9uQ2FjaGUoKSkKKyAgICAgICAgLy8gRE9NQXBwbGljYXRpb25D
YWNoZSBpcyBhbHdheXMgY3JlYXRlZCB2aWEgSlMsIHNvIHdlIGRvbid0IG5lZWQgdG8gdXNlIGNh
Y2hlRE9NT2JqZWN0KCkgaGVyZS4KKyAgICAgICAgcmV0dXJuIGdldENhY2hlZERPTU9iamVjdFdy
YXBwZXIoY2FjaGUpOworI2VuZGlmCisKKyAgICBpZiAoTWVzc2FnZVBvcnQqIG1lc3NhZ2VQb3J0
ID0gdGFyZ2V0LT50b01lc3NhZ2VQb3J0KCkpCisgICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIG1l
c3NhZ2VQb3J0KTsKKyAgICAKKyAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKKyAgICByZXR1cm4g
anNOdWxsKCk7Cit9CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IGJpbmRpbmdzL2pz
L0pTRXZlbnRUYXJnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0
LmgJKHJldmlzaW9uIDApCisrKyBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0LmgJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsNDIgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5j
LiBBbGwgUmlnaHRzIFJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworI2lmbmRlZiBKU0V2ZW50VGFyZ2V0X2gKKyNkZWZpbmUgSlNFdmVudFRhcmdl
dF9oCisKK25hbWVzcGFjZSBKU0MgeworICAgIGNsYXNzIEpTVmFsdWU7CisgICAgY2xhc3MgRXhl
Y1N0YXRlOworfQorCituYW1lc3BhY2UgV2ViQ29yZSB7CisKKyAgICBjbGFzcyBFdmVudFRhcmdl
dDsKKworICAgIEpTQzo6SlNWYWx1ZSogdG9KUyhKU0M6OkV4ZWNTdGF0ZSosIEV2ZW50VGFyZ2V0
Kik7CisKK30gLy8gbmFtZXNwYWNlIFdlYkNvcmUKKworI2VuZGlmIC8vIEpTRXZlbnRUYXJnZXRf
aApJbmRleDogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEJhc2UuY3BwCj09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0t
IGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRCYXNlLmNwcAkocmV2aXNpb24gMzcwNDUpCisrKyBi
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0QmFzZS5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTEsMTc1
ICswLDAgQEAKLS8qCi0gKiBDb3B5cmlnaHQgKEMpIDIwMDcgQXBwbGUgSW5jLiBBbGwgcmlnaHRz
IHJlc2VydmVkLgotICogICAgICAgICAgIChDKSAyMDA3LCAyMDA4IE5pa29sYXMgWmltbWVybWFu
biA8emltbWVybWFubkBrZGUub3JnPgotICoKLSAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAotICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCi0g
KiBhcmUgbWV0OgotICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KLSAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0Ci0gKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCi0gKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgotICoKLSAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKLSAqIEVY
UFJFU1MgT1IgSU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBU
TywgVEhFCi0gKiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRO
RVNTIEZPUiBBIFBBUlRJQ1VMQVIKLSAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBF
VkVOVCBTSEFMTCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgotICogQ09OVFJJQlVUT1JTIEJFIExJ
QUJMRSBGT1IgQU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCi0gKiBF
WEVNUExBUlksIE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJ
TUlURUQgVE8sCi0gKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VT
OyBMT1NTIE9GIFVTRSwgREFUQSwgT1IKLSAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQ
VElPTikgSE9XRVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKLSAqIE9GIExJQUJJTElUWSwg
V0hFVEhFUiBJTiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAotICogKElOQ0xV
RElORyBORUdMSUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBU
SEUgVVNFCi0gKiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJ
QklMSVRZIE9GIFNVQ0ggREFNQUdFLgotICovCi0KLSNpbmNsdWRlICJjb25maWcuaCIKLSNpbmNs
dWRlICJKU0V2ZW50VGFyZ2V0QmFzZS5oIgotCi0jaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNs
dWRlICJKU0RPTVdpbmRvdy5oIgotI2luY2x1ZGUgIkpTRXZlbnRMaXN0ZW5lci5oIgotI2luY2x1
ZGUgIkpTRXZlbnRUYXJnZXROb2RlLmgiCi0jaW5jbHVkZSAiSlNNZXNzYWdlUG9ydC5oIgotI2lu
Y2x1ZGUgIkpTWE1MSHR0cFJlcXVlc3RVcGxvYWQuaCIKLSNpbmNsdWRlIDxranMvRXJyb3IuaD4K
LQotI2lmIEVOQUJMRShTVkcpCi0jaW5jbHVkZSAiRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFu
Y2UuaCIKLSNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlLmgiCi0jZW5k
aWYKLQotdXNpbmcgbmFtZXNwYWNlIEpTQzsKLQotc3RhdGljIEpTVmFsdWUqIGpzRXZlbnRUYXJn
ZXRBZGRFdmVudExpc3RlbmVyKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSosIGNvbnN0
IEFyZ0xpc3QmKTsKLXN0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0UmVtb3ZlRXZlbnRMaXN0
ZW5lcihFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqLCBjb25zdCBBcmdMaXN0Jik7Ci1z
dGF0aWMgSlNWYWx1ZSoganNFdmVudFRhcmdldERpc3BhdGNoRXZlbnQoRXhlY1N0YXRlKiwgSlNP
YmplY3QqLCBKU1ZhbHVlKiwgY29uc3QgQXJnTGlzdCYpOwotCi0jaW5jbHVkZSAiSlNFdmVudFRh
cmdldEJhc2UubHV0LmgiCi0KLW5hbWVzcGFjZSBXZWJDb3JlIHsKLQotLyoKLUBiZWdpbiBKU0V2
ZW50VGFyZ2V0UHJvdG90eXBlVGFibGUKLWFkZEV2ZW50TGlzdGVuZXIgICAganNFdmVudFRhcmdl
dEFkZEV2ZW50TGlzdGVuZXIgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAzCi1yZW1vdmVFdmVu
dExpc3RlbmVyIGpzRXZlbnRUYXJnZXRSZW1vdmVFdmVudExpc3RlbmVyICAgIERvbnREZWxldGV8
RnVuY3Rpb24gMwotZGlzcGF0Y2hFdmVudCAgICAgICBqc0V2ZW50VGFyZ2V0RGlzcGF0Y2hFdmVu
dCAgICAgICAgICBEb250RGVsZXRlfEZ1bmN0aW9uIDEKLUBlbmQKLSovCi0KLXN0YXRpYyBpbmxp
bmUgYm9vbCByZXRyaWV2ZUV2ZW50VGFyZ2V0QW5kQ29ycmVzcG9uZGluZ05vZGUoRXhlY1N0YXRl
KiwgSlNWYWx1ZSogdGhpc1ZhbHVlLCBOb2RlKiYgZXZlbnROb2RlLCBFdmVudFRhcmdldComIGV2
ZW50VGFyZ2V0KQotewotICAgIGlmICh0aGlzVmFsdWUtPmlzT2JqZWN0KCZKU05vZGU6OnNfaW5m
bykpIHsKLSAgICAgICAgSlNFdmVudFRhcmdldE5vZGUqIGpzTm9kZSA9IHN0YXRpY19jYXN0PEpT
RXZlbnRUYXJnZXROb2RlKj4odGhpc1ZhbHVlKTsKLSAgICAgICAgRXZlbnRUYXJnZXROb2RlKiBu
b2RlID0gc3RhdGljX2Nhc3Q8RXZlbnRUYXJnZXROb2RlKj4oanNOb2RlLT5pbXBsKCkpOwotICAg
ICAgICBBU1NFUlQobm9kZSk7Ci0KLSAgICAgICAgZXZlbnROb2RlID0gbm9kZTsKLSAgICAgICAg
ZXZlbnRUYXJnZXQgPSBub2RlOwotICAgICAgICByZXR1cm4gdHJ1ZTsKLSAgICB9Ci0KLSNpZiBF
TkFCTEUoU1ZHKQotICAgIGlmICh0aGlzVmFsdWUtPmlzT2JqZWN0KCZKU1NWR0VsZW1lbnRJbnN0
YW5jZTo6c19pbmZvKSkgewotICAgICAgICBKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNl
KiBqc05vZGUgPSBzdGF0aWNfY2FzdDxKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlKj4o
dGhpc1ZhbHVlKTsKLSAgICAgICAgRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2UqIG5vZGUg
PSBzdGF0aWNfY2FzdDxFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZSo+KGpzTm9kZS0+aW1w
bCgpKTsKLSAgICAgICAgQVNTRVJUKG5vZGUpOwotCi0gICAgICAgIGV2ZW50Tm9kZSA9IG5vZGUt
PmNvcnJlc3BvbmRpbmdFbGVtZW50KCk7Ci0gICAgICAgIGV2ZW50VGFyZ2V0ID0gbm9kZTsKLSAg
ICAgICAgcmV0dXJuIHRydWU7Ci0gICAgfQotI2VuZGlmCi0KLSAgICByZXR1cm4gZmFsc2U7Ci19
Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKLQotdXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7Ci0K
LUpTVmFsdWUqIGpzRXZlbnRUYXJnZXRBZGRFdmVudExpc3RlbmVyKEV4ZWNTdGF0ZSogZXhlYywg
SlNPYmplY3QqLCBKU1ZhbHVlKiB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCi17Ci0g
ICAgV2ViQ29yZTo6Tm9kZSogZXZlbnROb2RlID0gMDsKLSAgICBFdmVudFRhcmdldCogZXZlbnRU
YXJnZXQgPSAwOwotICAgIGlmICghcmV0cmlldmVFdmVudFRhcmdldEFuZENvcnJlc3BvbmRpbmdO
b2RlKGV4ZWMsIHRoaXNWYWx1ZSwgZXZlbnROb2RlLCBldmVudFRhcmdldCkpCi0gICAgICAgIHJl
dHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7Ci0KLSAgICBGcmFtZSogZnJhbWUgPSBl
dmVudE5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSkKLSAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBpZiAoUmVmUHRyPEpTRXZlbnRMaXN0ZW5lcj4g
bGlzdGVuZXIgPSB0b0pTRE9NV2luZG93KGZyYW1lKS0+ZmluZE9yQ3JlYXRlSlNFdmVudExpc3Rl
bmVyKGV4ZWMsIGFyZ3MuYXQoZXhlYywgMSkpKQotICAgICAgICBldmVudFRhcmdldC0+YWRkRXZl
bnRMaXN0ZW5lcihhcmdzLmF0KGV4ZWMsIDApLT50b1N0cmluZyhleGVjKSwgbGlzdGVuZXIucmVs
ZWFzZSgpLCBhcmdzLmF0KGV4ZWMsIDIpLT50b0Jvb2xlYW4oZXhlYykpOwotCi0gICAgcmV0dXJu
IGpzVW5kZWZpbmVkKCk7Ci19Ci0KLUpTVmFsdWUqIGpzRXZlbnRUYXJnZXRSZW1vdmVFdmVudExp
c3RlbmVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3QqLCBKU1ZhbHVlKiB0aGlzVmFsdWUsIGNv
bnN0IEFyZ0xpc3QmIGFyZ3MpCi17Ci0gICAgV2ViQ29yZTo6Tm9kZSogZXZlbnROb2RlID0gMDsK
LSAgICBFdmVudFRhcmdldCogZXZlbnRUYXJnZXQgPSAwOwotICAgIGlmICghcmV0cmlldmVFdmVu
dFRhcmdldEFuZENvcnJlc3BvbmRpbmdOb2RlKGV4ZWMsIHRoaXNWYWx1ZSwgZXZlbnROb2RlLCBl
dmVudFRhcmdldCkpCi0gICAgICAgIHJldHVybiB0aHJvd0Vycm9yKGV4ZWMsIFR5cGVFcnJvcik7
Ci0KLSAgICBGcmFtZSogZnJhbWUgPSBldmVudE5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7Ci0g
ICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0KLSAgICBpZiAo
SlNFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHRvSlNET01XaW5kb3coZnJhbWUpLT5maW5kSlNF
dmVudExpc3RlbmVyKGFyZ3MuYXQoZXhlYywgMSkpKQotICAgICAgICBldmVudFRhcmdldC0+cmVt
b3ZlRXZlbnRMaXN0ZW5lcihhcmdzLmF0KGV4ZWMsIDApLT50b1N0cmluZyhleGVjKSwgbGlzdGVu
ZXIsIGFyZ3MuYXQoZXhlYywgMiktPnRvQm9vbGVhbihleGVjKSk7Ci0KLSAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKLX0KLQotSlNWYWx1ZSoganNFdmVudFRhcmdldERpc3BhdGNoRXZlbnQoRXhl
Y1N0YXRlKiBleGVjLCBKU09iamVjdCosIEpTVmFsdWUqIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlz
dCYgYXJncykKLXsKLSAgICBXZWJDb3JlOjpOb2RlKiBldmVudE5vZGUgPSAwOwotICAgIEV2ZW50
VGFyZ2V0KiBldmVudFRhcmdldCA9IDA7Ci0gICAgaWYgKCFyZXRyaWV2ZUV2ZW50VGFyZ2V0QW5k
Q29ycmVzcG9uZGluZ05vZGUoZXhlYywgdGhpc1ZhbHVlLCBldmVudE5vZGUsIGV2ZW50VGFyZ2V0
KSkKLSAgICAgICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKLQotICAgIEV4
Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIEpTVmFsdWUqIHJlc3VsdCA9IGpzQm9vbGVhbihldmVu
dFRhcmdldC0+ZGlzcGF0Y2hFdmVudCh0b0V2ZW50KGFyZ3MuYXQoZXhlYywgMCkpLCBlYykpOwot
ICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAgcmV0dXJuIHJlc3VsdDsKLX0KLQot
bmFtZXNwYWNlIFdlYkNvcmUgewotCi1KU1ZhbHVlKiB0b0pTKEV4ZWNTdGF0ZSogZXhlYywgRXZl
bnRUYXJnZXQqIHRhcmdldCkKLXsKLSAgICBpZiAoIXRhcmdldCkKLSAgICAgICAgcmV0dXJuIGpz
TnVsbCgpOwotICAgIAotI2lmIEVOQUJMRShTVkcpCi0gICAgLy8gU1ZHRWxlbWVudEluc3RhbmNl
IHN1cHBvcnRzIGJvdGggdG9TVkdFbGVtZW50SW5zdGFuY2UgYW5kIHRvTm9kZSBzaW5jZSBzbyBt
dWNoIG1vdXNlIGhhbmRsaW5nIGNvZGUgZGVwZW5kcyBvbiB0b05vZGUgcmV0dXJuaW5nIGEgdmFs
aWQgbm9kZS4KLSAgICBpZiAoU1ZHRWxlbWVudEluc3RhbmNlKiBpbnN0YW5jZSA9IHRhcmdldC0+
dG9TVkdFbGVtZW50SW5zdGFuY2UoKSkKLSAgICAgICAgcmV0dXJuIHRvSlMoZXhlYywgaW5zdGFu
Y2UpOwotI2VuZGlmCi0gICAgCi0gICAgaWYgKE5vZGUqIG5vZGUgPSB0YXJnZXQtPnRvTm9kZSgp
KQotICAgICAgICByZXR1cm4gdG9KUyhleGVjLCBub2RlKTsKLQotICAgIGlmIChYTUxIdHRwUmVx
dWVzdCogeGhyID0gdGFyZ2V0LT50b1hNTEh0dHBSZXF1ZXN0KCkpCi0gICAgICAgIC8vIFhNTEh0
dHBSZXF1ZXN0IGlzIGFsd2F5cyBjcmVhdGVkIHZpYSBKUywgc28gd2UgZG9uJ3QgbmVlZCB0byB1
c2UgY2FjaGVET01PYmplY3QoKSBoZXJlLgotICAgICAgICByZXR1cm4gZ2V0Q2FjaGVkRE9NT2Jq
ZWN0V3JhcHBlcih4aHIpOwotCi0gICAgaWYgKFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB1cGxvYWQg
PSB0YXJnZXQtPnRvWE1MSHR0cFJlcXVlc3RVcGxvYWQoKSkKLSAgICAgICAgcmV0dXJuIHRvSlMo
ZXhlYywgdXBsb2FkKTsKLQotI2lmIEVOQUJMRShPRkZMSU5FX1dFQl9BUFBMSUNBVElPTlMpCi0g
ICAgaWYgKERPTUFwcGxpY2F0aW9uQ2FjaGUqIGNhY2hlID0gdGFyZ2V0LT50b0RPTUFwcGxpY2F0
aW9uQ2FjaGUoKSkKLSAgICAgICAgLy8gRE9NQXBwbGljYXRpb25DYWNoZSBpcyBhbHdheXMgY3Jl
YXRlZCB2aWEgSlMsIHNvIHdlIGRvbid0IG5lZWQgdG8gdXNlIGNhY2hlRE9NT2JqZWN0KCkgaGVy
ZS4KLSAgICAgICAgcmV0dXJuIGdldENhY2hlZERPTU9iamVjdFdyYXBwZXIoY2FjaGUpOwotI2Vu
ZGlmCi0KLSAgICBpZiAoTWVzc2FnZVBvcnQqIG1lc3NhZ2VQb3J0ID0gdGFyZ2V0LT50b01lc3Nh
Z2VQb3J0KCkpCi0gICAgICAgIHJldHVybiB0b0pTKGV4ZWMsIG1lc3NhZ2VQb3J0KTsKLSAgICAK
LSAgICBBU1NFUlRfTk9UX1JFQUNIRUQoKTsKLSAgICByZXR1cm4ganNOdWxsKCk7Ci19Ci0KLX0g
Ly8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXRCYXNl
LmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PQotLS0gYmluZGluZ3MvanMvSlNFdmVudFRhcmdldEJhc2UuaAkocmV2aXNp
b24gMzcwNDUpCisrKyBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0QmFzZS5oCSh3b3JraW5nIGNv
cHkpCkBAIC0xLDUgKzEsNSBAQAogLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNyBBcHBsZSBJbmMu
IEFsbCByaWdodHMgcmVzZXJ2ZWQuCisgKiBDb3B5cmlnaHQgKEMpIDIwMDcsIDIwMDggQXBwbGUg
SW5jLiBBbGwgcmlnaHRzIHJlc2VydmVkLgogICogICAgICAgICAgIChDKSAyMDA3IE5pa29sYXMg
WmltbWVybWFubiA8emltbWVybWFubkBrZGUub3JnPgogICoKICAqIFJlZGlzdHJpYnV0aW9uIGFu
ZCB1c2UgaW4gc291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dApAQCAtNzQs
NyArNzQsNyBAQAogICAgIG1hY3JvKHNwZWNpZmljRXZlbnRUYXJnZXQsIE9uVW5sb2FkLCB1bmxv
YWRFdmVudCkgXAogCiAjZGVmaW5lIEVWRU5UX0xJU1RFTkVSX0dFVFRFUihzcGVjaWZpY0V2ZW50
VGFyZ2V0LCBuYW1lLCBldmVudCkgXAotSlNDOjpKU1ZhbHVlKiBqcyMjc3BlY2lmaWNFdmVudFRh
cmdldCMjbmFtZShKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwg
Y29uc3QgSlNDOjpQcm9wZXJ0eVNsb3QmIHNsb3QpIFwKK0pTQzo6SlNWYWx1ZSoganMjI3NwZWNp
ZmljRXZlbnRUYXJnZXQjI25hbWUoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6OklkZW50aWZp
ZXImLCBjb25zdCBKU0M6OlByb3BlcnR5U2xvdCYgc2xvdCkgXAogeyBcCiAgICAgcmV0dXJuIHN0
YXRpY19jYXN0PEpTIyNzcGVjaWZpY0V2ZW50VGFyZ2V0Kj4oc2xvdC5zbG90QmFzZSgpKS0+Z2V0
TGlzdGVuZXIoZXZlbnQpOyBcCiB9IFwKQEAgLTg5LDQyICs4OSw0IEBAIHZvaWQgc2V0SlMjI3Nw
ZWNpZmljRXZlbnRUYXJnZXQjI25hbWUoSlMKICAgICBKU19FVkVOVF9MSVNURU5FUl9GT1JfRUFD
SF9MSVNURU5FUihzcGVjaWZpY0V2ZW50VGFyZ2V0LCBFVkVOVF9MSVNURU5FUl9HRVRURVIpIFwK
ICAgICBKU19FVkVOVF9MSVNURU5FUl9GT1JfRUFDSF9MSVNURU5FUihzcGVjaWZpY0V2ZW50VGFy
Z2V0LCBFVkVOVF9MSVNURU5FUl9TRVRURVIpIFwKIAotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0g
ICAgY2xhc3MgQXRvbWljU3RyaW5nOwotICAgIGNsYXNzIEV2ZW50VGFyZ2V0OwotCi0gICAgZXh0
ZXJuIGNvbnN0IHN0cnVjdCBKU0M6Okhhc2hUYWJsZSBKU0V2ZW50VGFyZ2V0UHJvdG90eXBlVGFi
bGU7Ci0KLSAgICAvLyBUaGUgaWRlYSBoZXJlIGlzIHRoYXQgY2xhc3NlcyBsaWtlIEpTRXZlbnRU
YXJnZXROb2RlIGFuZCBKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlCi0gICAgLy8gY2Fu
IHNoYXJlIGEgcHJvdG90eXBlIHdpdGggdGhlIG9ubHkgZGlmZmVyZW5jZSBiZWluZyB0aGUgbmFt
ZS4KLSAgICB0ZW1wbGF0ZTxjbGFzcyBKU1NwZWNpZmljRXZlbnRUYXJnZXQ+Ci0gICAgY2xhc3Mg
SlNFdmVudFRhcmdldEJhc2VQcm90b3R5cGUgOiBwdWJsaWMgSlNDOjpKU09iamVjdCB7Ci0gICAg
cHVibGljOgotICAgICAgICBKU0V2ZW50VGFyZ2V0QmFzZVByb3RvdHlwZShQYXNzUmVmUHRyPEpT
Qzo6U3RydWN0dXJlSUQ+IHN0cnVjdHVyZSkKLSAgICAgICAgICAgIDogSlNDOjpKU09iamVjdChz
dHJ1Y3R1cmUpCi0gICAgICAgIHsKLSAgICAgICAgfQotCi0gICAgICAgIHN0YXRpYyBKU0M6OkpT
T2JqZWN0KiBzZWxmKEpTQzo6RXhlY1N0YXRlKiBleGVjKQotICAgICAgICB7Ci0gICAgICAgICAg
ICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTU3BlY2lmaWNFdmVudFRhcmdldD4oZXhlYyk7Ci0g
ICAgICAgIH0KLQotICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90KEpTQzo6
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBKU0M6OklkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlND
OjpQcm9wZXJ0eVNsb3QmIHNsb3QpCi0gICAgICAgIHsKLSAgICAgICAgICAgIHJldHVybiBKU0M6
OmdldFN0YXRpY0Z1bmN0aW9uU2xvdDxKU0M6OkpTT2JqZWN0PihleGVjLCAmSlNFdmVudFRhcmdl
dFByb3RvdHlwZVRhYmxlLCB0aGlzLCBwcm9wZXJ0eU5hbWUsIHNsb3QpOwotICAgICAgICB9Ci0K
LSAgICAgICAgdmlydHVhbCBjb25zdCBKU0M6OkNsYXNzSW5mbyogY2xhc3NJbmZvKCkgY29uc3QK
LSAgICAgICAgewotICAgICAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfY2xh
c3NJbmZvID0geyBKU1NwZWNpZmljRXZlbnRUYXJnZXQ6OnByb3RvdHlwZUNsYXNzTmFtZSgpLCAw
LCAmSlNFdmVudFRhcmdldFByb3RvdHlwZVRhYmxlLCAwIH07Ci0gICAgICAgICAgICByZXR1cm4g
JnNfY2xhc3NJbmZvOwotICAgICAgICB9Ci0gICAgfTsKLQotICAgIEpTQzo6SlNWYWx1ZSogdG9K
UyhKU0M6OkV4ZWNTdGF0ZSosIEV2ZW50VGFyZ2V0Kik7Ci0KLX0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKLQogI2VuZGlmIC8vIEpTRXZlbnRUYXJnZXRCYXNlX2gKSW5kZXg6IGJpbmRpbmdzL2pzL0pT
RXZlbnRUYXJnZXROb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qcy9KU0V2ZW50VGFy
Z2V0Tm9kZS5jcHAJKHJldmlzaW9uIDM3MDQ1KQorKysgYmluZGluZ3MvanMvSlNFdmVudFRhcmdl
dE5vZGUuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0xLDIyNSArMCwwIEBACi0vKgotICogQ29weXJp
Z2h0IChDKSAyMDA3LCAyMDA4IEFwcGxlIEluYy4gQWxsIHJpZ2h0cyByZXNlcnZlZC4KLSAqICAg
ICAgICAgICAoQykgMjAwNyBOaWtvbGFzIFppbW1lcm1hbm4gPHppbW1lcm1hbm5Aa2RlLm9yZz4K
LSAqCi0gKiBSZWRpc3RyaWJ1dGlvbiBhbmQgdXNlIGluIHNvdXJjZSBhbmQgYmluYXJ5IGZvcm1z
LCB3aXRoIG9yIHdpdGhvdXQKLSAqIG1vZGlmaWNhdGlvbiwgYXJlIHBlcm1pdHRlZCBwcm92aWRl
ZCB0aGF0IHRoZSBmb2xsb3dpbmcgY29uZGl0aW9ucwotICogYXJlIG1ldDoKLSAqIDEuIFJlZGlz
dHJpYnV0aW9ucyBvZiBzb3VyY2UgY29kZSBtdXN0IHJldGFpbiB0aGUgYWJvdmUgY29weXJpZ2h0
Ci0gKiAgICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5n
IGRpc2NsYWltZXIuCi0gKiAyLiBSZWRpc3RyaWJ1dGlvbnMgaW4gYmluYXJ5IGZvcm0gbXVzdCBy
ZXByb2R1Y2UgdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2Yg
Y29uZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyIGluIHRoZQotICogICAgZG9j
dW1lbnRhdGlvbiBhbmQvb3Igb3RoZXIgbWF0ZXJpYWxzIHByb3ZpZGVkIHdpdGggdGhlIGRpc3Ry
aWJ1dGlvbi4KLSAqCi0gKiBUSElTIFNPRlRXQVJFIElTIFBST1ZJREVEIEJZIEFQUExFIENPTVBV
VEVSLCBJTkMuIGBgQVMgSVMnJyBBTkQgQU5ZCi0gKiBFWFBSRVNTIE9SIElNUExJRUQgV0FSUkFO
VElFUywgSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8sIFRIRQotICogSU1QTElFRCBXQVJS
QU5USUVTIE9GIE1FUkNIQU5UQUJJTElUWSBBTkQgRklUTkVTUyBGT1IgQSBQQVJUSUNVTEFSCi0g
KiBQVVJQT1NFIEFSRSBESVNDTEFJTUVELiAgSU4gTk8gRVZFTlQgU0hBTEwgQVBQTEUgQ09NUFVU
RVIsIElOQy4gT1IKLSAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1QsIElO
RElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAotICogRVhFTVBMQVJZLCBPUiBDT05TRVFVRU5U
SUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAotICogUFJPQ1VSRU1F
TlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEsIE9S
Ci0gKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VEIEFO
RCBPTiBBTlkgVEhFT1JZCi0gKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1QsIFNU
UklDVCBMSUFCSUxJVFksIE9SIFRPUlQKLSAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBPVEhF
UldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQotICogT0YgVEhJUyBTT0ZU
V0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFHRS4K
LSAqLwotCi0jaW5jbHVkZSAiY29uZmlnLmgiCi0jaW5jbHVkZSAiSlNFdmVudFRhcmdldE5vZGUu
aCIKLQotI2luY2x1ZGUgIkRvY3VtZW50LmgiCi0jaW5jbHVkZSAiRXZlbnROYW1lcy5oIgotI2lu
Y2x1ZGUgIkpTRE9NV2luZG93LmgiCi0jaW5jbHVkZSAiSlNFdmVudExpc3RlbmVyLmgiCi0KLXVz
aW5nIG5hbWVzcGFjZSBKU0M7Ci0KLXVzaW5nIG5hbWVzcGFjZSBXZWJDb3JlOjpFdmVudE5hbWVz
OwotCi1BU1NFUlRfQ0xBU1NfRklUU19JTl9DRUxMKFdlYkNvcmU6OkpTRXZlbnRUYXJnZXROb2Rl
KQotCi1zdGF0aWMgSlNWYWx1ZSoganNFdmVudFRhcmdldE5vZGVPbkFib3J0KEV4ZWNTdGF0ZSos
IGNvbnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKLXN0YXRpYyB2b2lkIHNl
dEpTRXZlbnRUYXJnZXROb2RlT25BYm9ydChFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUq
KTsKLXN0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0Tm9kZU9uQmx1cihFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7Ci1zdGF0aWMgdm9pZCBzZXRK
U0V2ZW50VGFyZ2V0Tm9kZU9uQmx1cihFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsK
LXN0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0Tm9kZU9uQ2hhbmdlKEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKLXN0YXRpYyB2b2lkIHNldEpT
RXZlbnRUYXJnZXROb2RlT25DaGFuZ2UoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7
Ci1zdGF0aWMgSlNWYWx1ZSoganNFdmVudFRhcmdldE5vZGVPbkNsaWNrKEV4ZWNTdGF0ZSosIGNv
bnN0IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKLXN0YXRpYyB2b2lkIHNldEpT
RXZlbnRUYXJnZXROb2RlT25DbGljayhFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsK
LXN0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0Tm9kZU9uQ29udGV4dE1lbnUoRXhlY1N0YXRl
KiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwotc3RhdGljIHZvaWQg
c2V0SlNFdmVudFRhcmdldE5vZGVPbkNvbnRleHRNZW51KEV4ZWNTdGF0ZSosIEpTT2JqZWN0Kiwg
SlNWYWx1ZSopOwotc3RhdGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXROb2RlT25EYmxDbGljayhF
eGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7Ci1zdGF0
aWMgdm9pZCBzZXRKU0V2ZW50VGFyZ2V0Tm9kZU9uRGJsQ2xpY2soRXhlY1N0YXRlKiwgSlNPYmpl
Y3QqLCBKU1ZhbHVlKik7Ci1zdGF0aWMgSlNWYWx1ZSoganNFdmVudFRhcmdldE5vZGVPbkJlZm9y
ZUN1dChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7
Ci1zdGF0aWMgdm9pZCBzZXRKU0V2ZW50VGFyZ2V0Tm9kZU9uQmVmb3JlQ3V0KEV4ZWNTdGF0ZSos
IEpTT2JqZWN0KiwgSlNWYWx1ZSopOwotc3RhdGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXROb2Rl
T25DdXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYp
Owotc3RhdGljIHZvaWQgc2V0SlNFdmVudFRhcmdldE5vZGVPbkN1dChFeGVjU3RhdGUqLCBKU09i
amVjdCosIEpTVmFsdWUqKTsKLXN0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0Tm9kZU9uQmVm
b3JlQ29weShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90
Jik7Ci1zdGF0aWMgdm9pZCBzZXRKU0V2ZW50VGFyZ2V0Tm9kZU9uQmVmb3JlQ29weShFeGVjU3Rh
dGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKLXN0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0
Tm9kZU9uQ29weShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlT
bG90Jik7Ci1zdGF0aWMgdm9pZCBzZXRKU0V2ZW50VGFyZ2V0Tm9kZU9uQ29weShFeGVjU3RhdGUq
LCBKU09iamVjdCosIEpTVmFsdWUqKTsKLXN0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0Tm9k
ZU9uQmVmb3JlUGFzdGUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3Bl
cnR5U2xvdCYpOwotc3RhdGljIHZvaWQgc2V0SlNFdmVudFRhcmdldE5vZGVPbkJlZm9yZVBhc3Rl
KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOwotc3RhdGljIEpTVmFsdWUqIGpzRXZl
bnRUYXJnZXROb2RlT25QYXN0ZShFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3Qg
UHJvcGVydHlTbG90Jik7Ci1zdGF0aWMgdm9pZCBzZXRKU0V2ZW50VGFyZ2V0Tm9kZU9uUGFzdGUo
RXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7Ci1zdGF0aWMgSlNWYWx1ZSoganNFdmVu
dFRhcmdldE5vZGVPbkRyYWcoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFBy
b3BlcnR5U2xvdCYpOwotc3RhdGljIHZvaWQgc2V0SlNFdmVudFRhcmdldE5vZGVPbkRyYWcoRXhl
Y1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7Ci1zdGF0aWMgSlNWYWx1ZSoganNFdmVudFRh
cmdldE5vZGVPbkRyYWdFbmQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFBy
b3BlcnR5U2xvdCYpOwotc3RhdGljIHZvaWQgc2V0SlNFdmVudFRhcmdldE5vZGVPbkRyYWdFbmQo
RXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7Ci1zdGF0aWMgSlNWYWx1ZSoganNFdmVu
dFRhcmdldE5vZGVPbkRyYWdFbnRlcihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29u
c3QgUHJvcGVydHlTbG90Jik7Ci1zdGF0aWMgdm9pZCBzZXRKU0V2ZW50VGFyZ2V0Tm9kZU9uRHJh
Z0VudGVyKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOwotc3RhdGljIEpTVmFsdWUq
IGpzRXZlbnRUYXJnZXROb2RlT25EcmFnTGVhdmUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmll
ciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwotc3RhdGljIHZvaWQgc2V0SlNFdmVudFRhcmdldE5v
ZGVPbkRyYWdMZWF2ZShFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKLXN0YXRpYyBK
U1ZhbHVlKiBqc0V2ZW50VGFyZ2V0Tm9kZU9uRHJhZ092ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRl
bnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwotc3RhdGljIHZvaWQgc2V0SlNFdmVudFRh
cmdldE5vZGVPbkRyYWdPdmVyKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOwotc3Rh
dGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXROb2RlT25EcmFnU3RhcnQoRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwotc3RhdGljIHZvaWQgc2V0SlNF
dmVudFRhcmdldE5vZGVPbkRyYWdTdGFydChFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUq
KTsKLXN0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0Tm9kZU9uRHJvcChFeGVjU3RhdGUqLCBj
b25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7Ci1zdGF0aWMgdm9pZCBzZXRK
U0V2ZW50VGFyZ2V0Tm9kZU9uRHJvcChFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsK
LXN0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0Tm9kZU9uRXJyb3IoRXhlY1N0YXRlKiwgY29u
c3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwotc3RhdGljIHZvaWQgc2V0SlNF
dmVudFRhcmdldE5vZGVPbkVycm9yKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOwot
c3RhdGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXROb2RlT25Gb2N1cyhFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7Ci1zdGF0aWMgdm9pZCBzZXRKU0V2
ZW50VGFyZ2V0Tm9kZU9uRm9jdXMoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7Ci1z
dGF0aWMgSlNWYWx1ZSoganNFdmVudFRhcmdldE5vZGVPbklucHV0KEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKLXN0YXRpYyB2b2lkIHNldEpTRXZl
bnRUYXJnZXROb2RlT25JbnB1dChFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKLXN0
YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0Tm9kZU9uS2V5RG93bihFeGVjU3RhdGUqLCBjb25z
dCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7Ci1zdGF0aWMgdm9pZCBzZXRKU0V2
ZW50VGFyZ2V0Tm9kZU9uS2V5RG93bihFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsK
LXN0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0Tm9kZU9uS2V5UHJlc3MoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwotc3RhdGljIHZvaWQgc2V0
SlNFdmVudFRhcmdldE5vZGVPbktleVByZXNzKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1
ZSopOwotc3RhdGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXROb2RlT25LZXlVcChFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7Ci1zdGF0aWMgdm9pZCBz
ZXRKU0V2ZW50VGFyZ2V0Tm9kZU9uS2V5VXAoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVl
Kik7Ci1zdGF0aWMgSlNWYWx1ZSoganNFdmVudFRhcmdldE5vZGVPbkxvYWQoRXhlY1N0YXRlKiwg
Y29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwotc3RhdGljIHZvaWQgc2V0
SlNFdmVudFRhcmdldE5vZGVPbkxvYWQoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7
Ci1zdGF0aWMgSlNWYWx1ZSoganNFdmVudFRhcmdldE5vZGVPbk1vdXNlRG93bihFeGVjU3RhdGUq
LCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90Jik7Ci1zdGF0aWMgdm9pZCBz
ZXRKU0V2ZW50VGFyZ2V0Tm9kZU9uTW91c2VEb3duKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNW
YWx1ZSopOwotc3RhdGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXROb2RlT25Nb3VzZU1vdmUoRXhl
Y1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwotc3RhdGlj
IHZvaWQgc2V0SlNFdmVudFRhcmdldE5vZGVPbk1vdXNlTW92ZShFeGVjU3RhdGUqLCBKU09iamVj
dCosIEpTVmFsdWUqKTsKLXN0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0Tm9kZU9uTW91c2VP
dXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwot
c3RhdGljIHZvaWQgc2V0SlNFdmVudFRhcmdldE5vZGVPbk1vdXNlT3V0KEV4ZWNTdGF0ZSosIEpT
T2JqZWN0KiwgSlNWYWx1ZSopOwotc3RhdGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXROb2RlT25N
b3VzZU92ZXIoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xv
dCYpOwotc3RhdGljIHZvaWQgc2V0SlNFdmVudFRhcmdldE5vZGVPbk1vdXNlT3ZlcihFeGVjU3Rh
dGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKLXN0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0
Tm9kZU9uTW91c2VVcChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVy
dHlTbG90Jik7Ci1zdGF0aWMgdm9pZCBzZXRKU0V2ZW50VGFyZ2V0Tm9kZU9uTW91c2VVcChFeGVj
U3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKLXN0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFy
Z2V0Tm9kZU9uTW91c2VXaGVlbChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3Qg
UHJvcGVydHlTbG90Jik7Ci1zdGF0aWMgdm9pZCBzZXRKU0V2ZW50VGFyZ2V0Tm9kZU9uTW91c2VX
aGVlbChFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKLXN0YXRpYyBKU1ZhbHVlKiBq
c0V2ZW50VGFyZ2V0Tm9kZU9uUmVzZXQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNv
bnN0IFByb3BlcnR5U2xvdCYpOwotc3RhdGljIHZvaWQgc2V0SlNFdmVudFRhcmdldE5vZGVPblJl
c2V0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOwotc3RhdGljIEpTVmFsdWUqIGpz
RXZlbnRUYXJnZXROb2RlT25SZXNpemUoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYsIGNv
bnN0IFByb3BlcnR5U2xvdCYpOwotc3RhdGljIHZvaWQgc2V0SlNFdmVudFRhcmdldE5vZGVPblJl
c2l6ZShFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKLXN0YXRpYyBKU1ZhbHVlKiBq
c0V2ZW50VGFyZ2V0Tm9kZU9uU2Nyb2xsKEV4ZWNTdGF0ZSosIGNvbnN0IElkZW50aWZpZXImLCBj
b25zdCBQcm9wZXJ0eVNsb3QmKTsKLXN0YXRpYyB2b2lkIHNldEpTRXZlbnRUYXJnZXROb2RlT25T
Y3JvbGwoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7Ci1zdGF0aWMgSlNWYWx1ZSog
anNFdmVudFRhcmdldE5vZGVPblNlYXJjaChFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwg
Y29uc3QgUHJvcGVydHlTbG90Jik7Ci1zdGF0aWMgdm9pZCBzZXRKU0V2ZW50VGFyZ2V0Tm9kZU9u
U2VhcmNoKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOwotc3RhdGljIEpTVmFsdWUq
IGpzRXZlbnRUYXJnZXROb2RlT25TZWxlY3QoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRpZmllciYs
IGNvbnN0IFByb3BlcnR5U2xvdCYpOwotc3RhdGljIHZvaWQgc2V0SlNFdmVudFRhcmdldE5vZGVP
blNlbGVjdChFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKLXN0YXRpYyBKU1ZhbHVl
KiBqc0V2ZW50VGFyZ2V0Tm9kZU9uU2VsZWN0U3RhcnQoRXhlY1N0YXRlKiwgY29uc3QgSWRlbnRp
ZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwotc3RhdGljIHZvaWQgc2V0SlNFdmVudFRhcmdl
dE5vZGVPblNlbGVjdFN0YXJ0KEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSopOwotc3Rh
dGljIEpTVmFsdWUqIGpzRXZlbnRUYXJnZXROb2RlT25TdWJtaXQoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwotc3RhdGljIHZvaWQgc2V0SlNFdmVu
dFRhcmdldE5vZGVPblN1Ym1pdChFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqKTsKLXN0
YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0Tm9kZU9uVW5sb2FkKEV4ZWNTdGF0ZSosIGNvbnN0
IElkZW50aWZpZXImLCBjb25zdCBQcm9wZXJ0eVNsb3QmKTsKLXN0YXRpYyB2b2lkIHNldEpTRXZl
bnRUYXJnZXROb2RlT25VbmxvYWQoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBKU1ZhbHVlKik7Ci0K
LS8qIFNvdXJjZSBmb3IgSlNFdmVudFRhcmdldE5vZGVUYWJsZQotQGJlZ2luIEpTRXZlbnRUYXJn
ZXROb2RlVGFibGUKLW9uYWJvcnQgICAgICAganNFdmVudFRhcmdldE5vZGVPbkFib3J0ICAgICAg
ICBEb250RGVsZXRlfERvbnRFbnVtCi1vbmJsdXIgICAgICAgIGpzRXZlbnRUYXJnZXROb2RlT25C
bHVyICAgICAgICAgRG9udERlbGV0ZXxEb250RW51bQotb25jaGFuZ2UgICAgICBqc0V2ZW50VGFy
Z2V0Tm9kZU9uQ2hhbmdlICAgICAgIERvbnREZWxldGV8RG9udEVudW0KLW9uY2xpY2sgICAgICAg
anNFdmVudFRhcmdldE5vZGVPbkNsaWNrICAgICAgICBEb250RGVsZXRlfERvbnRFbnVtCi1vbmNv
bnRleHRtZW51IGpzRXZlbnRUYXJnZXROb2RlT25Db250ZXh0TWVudSAgRG9udERlbGV0ZXxEb250
RW51bQotb25kYmxjbGljayAgICBqc0V2ZW50VGFyZ2V0Tm9kZU9uRGJsQ2xpY2sgICAgIERvbnRE
ZWxldGV8RG9udEVudW0KLW9uYmVmb3JlY3V0ICAganNFdmVudFRhcmdldE5vZGVPbkJlZm9yZUN1
dCAgICBEb250RGVsZXRlfERvbnRFbnVtCi1vbmN1dCAgICAgICAgIGpzRXZlbnRUYXJnZXROb2Rl
T25DdXQgICAgICAgICAgRG9udERlbGV0ZXxEb250RW51bQotb25iZWZvcmVjb3B5ICBqc0V2ZW50
VGFyZ2V0Tm9kZU9uQmVmb3JlQ29weSAgIERvbnREZWxldGV8RG9udEVudW0KLW9uY29weSAgICAg
ICAganNFdmVudFRhcmdldE5vZGVPbkNvcHkgICAgICAgICBEb250RGVsZXRlfERvbnRFbnVtCi1v
bmJlZm9yZXBhc3RlIGpzRXZlbnRUYXJnZXROb2RlT25CZWZvcmVQYXN0ZSAgRG9udERlbGV0ZXxE
b250RW51bQotb25wYXN0ZSAgICAgICBqc0V2ZW50VGFyZ2V0Tm9kZU9uUGFzdGUgICAgICAgIERv
bnREZWxldGV8RG9udEVudW0KLW9uZHJhZyAgICAgICAganNFdmVudFRhcmdldE5vZGVPbkRyYWcg
ICAgICAgICBEb250RGVsZXRlfERvbnRFbnVtCi1vbmRyYWdlbmQgICAgIGpzRXZlbnRUYXJnZXRO
b2RlT25EcmFnRW5kICAgICAgRG9udERlbGV0ZXxEb250RW51bQotb25kcmFnZW50ZXIgICBqc0V2
ZW50VGFyZ2V0Tm9kZU9uRHJhZ0VudGVyICAgIERvbnREZWxldGV8RG9udEVudW0KLW9uZHJhZ2xl
YXZlICAganNFdmVudFRhcmdldE5vZGVPbkRyYWdMZWF2ZSAgICBEb250RGVsZXRlfERvbnRFbnVt
Ci1vbmRyYWdvdmVyICAgIGpzRXZlbnRUYXJnZXROb2RlT25EcmFnT3ZlciAgICAgRG9udERlbGV0
ZXxEb250RW51bQotb25kcmFnc3RhcnQgICBqc0V2ZW50VGFyZ2V0Tm9kZU9uRHJhZ1N0YXJ0ICAg
IERvbnREZWxldGV8RG9udEVudW0KLW9uZHJvcCAgICAgICAganNFdmVudFRhcmdldE5vZGVPbkRy
b3AgICAgICAgICBEb250RGVsZXRlfERvbnRFbnVtCi1vbmVycm9yICAgICAgIGpzRXZlbnRUYXJn
ZXROb2RlT25FcnJvciAgICAgICAgRG9udERlbGV0ZXxEb250RW51bQotb25mb2N1cyAgICAgICBq
c0V2ZW50VGFyZ2V0Tm9kZU9uRm9jdXMgICAgICAgIERvbnREZWxldGV8RG9udEVudW0KLW9uaW5w
dXQgICAgICAganNFdmVudFRhcmdldE5vZGVPbklucHV0ICAgICAgICBEb250RGVsZXRlfERvbnRF
bnVtCi1vbmtleWRvd24gICAgIGpzRXZlbnRUYXJnZXROb2RlT25LZXlEb3duICAgICAgRG9udERl
bGV0ZXxEb250RW51bQotb25rZXlwcmVzcyAgICBqc0V2ZW50VGFyZ2V0Tm9kZU9uS2V5UHJlc3Mg
ICAgIERvbnREZWxldGV8RG9udEVudW0KLW9ua2V5dXAgICAgICAganNFdmVudFRhcmdldE5vZGVP
bktleVVwICAgICAgICBEb250RGVsZXRlfERvbnRFbnVtCi1vbmxvYWQgICAgICAgIGpzRXZlbnRU
YXJnZXROb2RlT25Mb2FkICAgICAgICAgRG9udERlbGV0ZXxEb250RW51bQotb25tb3VzZWRvd24g
ICBqc0V2ZW50VGFyZ2V0Tm9kZU9uTW91c2VEb3duICAgIERvbnREZWxldGV8RG9udEVudW0KLW9u
bW91c2Vtb3ZlICAganNFdmVudFRhcmdldE5vZGVPbk1vdXNlTW92ZSAgICBEb250RGVsZXRlfERv
bnRFbnVtCi1vbm1vdXNlb3V0ICAgIGpzRXZlbnRUYXJnZXROb2RlT25Nb3VzZU91dCAgICAgRG9u
dERlbGV0ZXxEb250RW51bQotb25tb3VzZW92ZXIgICBqc0V2ZW50VGFyZ2V0Tm9kZU9uTW91c2VP
dmVyICAgIERvbnREZWxldGV8RG9udEVudW0KLW9ubW91c2V1cCAgICAganNFdmVudFRhcmdldE5v
ZGVPbk1vdXNlVXAgICAgICBEb250RGVsZXRlfERvbnRFbnVtCi1vbm1vdXNld2hlZWwgIGpzRXZl
bnRUYXJnZXROb2RlT25Nb3VzZVdoZWVsICAgRG9udERlbGV0ZXxEb250RW51bQotb25yZXNldCAg
ICAgICBqc0V2ZW50VGFyZ2V0Tm9kZU9uUmVzZXQgICAgICAgIERvbnREZWxldGV8RG9udEVudW0K
LW9ucmVzaXplICAgICAganNFdmVudFRhcmdldE5vZGVPblJlc2l6ZSAgICAgICBEb250RGVsZXRl
fERvbnRFbnVtCi1vbnNjcm9sbCAgICAgIGpzRXZlbnRUYXJnZXROb2RlT25TY3JvbGwgICAgICAg
RG9udERlbGV0ZXxEb250RW51bQotb25zZWFyY2ggICAgICBqc0V2ZW50VGFyZ2V0Tm9kZU9uU2Vh
cmNoICAgICAgIERvbnREZWxldGV8RG9udEVudW0KLW9uc2VsZWN0ICAgICAganNFdmVudFRhcmdl
dE5vZGVPblNlbGVjdCAgICAgICBEb250RGVsZXRlfERvbnRFbnVtCi1vbnNlbGVjdHN0YXJ0IGpz
RXZlbnRUYXJnZXROb2RlT25TZWxlY3RTdGFydCAgRG9udERlbGV0ZXxEb250RW51bQotb25zdWJt
aXQgICAgICBqc0V2ZW50VGFyZ2V0Tm9kZU9uU3VibWl0ICAgICAgIERvbnREZWxldGV8RG9udEVu
dW0KLW9udW5sb2FkICAgICAganNFdmVudFRhcmdldE5vZGVPblVubG9hZCAgICAgICBEb250RGVs
ZXRlfERvbnRFbnVtCi1AZW5kCi0qLwotCi11c2luZyBuYW1lc3BhY2UgV2ViQ29yZTsKLURFQ0xB
UkVfSlNfRVZFTlRfTElTVEVORVJTKEV2ZW50VGFyZ2V0Tm9kZSkKLQotI2luY2x1ZGUgIkpTRXZl
bnRUYXJnZXROb2RlLmx1dC5oIgotCi1uYW1lc3BhY2UgV2ViQ29yZSB7Ci0KLWNvbnN0IENsYXNz
SW5mbyBKU0V2ZW50VGFyZ2V0Tm9kZTo6c19pbmZvID0geyAiRXZlbnRUYXJnZXROb2RlIiwgJkpT
Tm9kZTo6c19pbmZvLCAmSlNFdmVudFRhcmdldE5vZGVUYWJsZSwgMCB9OwotCi1KU0V2ZW50VGFy
Z2V0Tm9kZTo6SlNFdmVudFRhcmdldE5vZGUoUGFzc1JlZlB0cjxTdHJ1Y3R1cmVJRD4gc3RydWN0
dXJlLCBQYXNzUmVmUHRyPEV2ZW50VGFyZ2V0Tm9kZT4gbm9kZSkKLSAgICA6IEpTTm9kZShzdHJ1
Y3R1cmUsIG5vZGUpCi17Ci19Ci0KLWJvb2wgSlNFdmVudFRhcmdldE5vZGU6OmdldE93blByb3Bl
cnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwg
UHJvcGVydHlTbG90JiBzbG90KQotewotICAgIHJldHVybiBnZXRTdGF0aWNWYWx1ZVNsb3Q8SlNF
dmVudFRhcmdldE5vZGUsIEpTTm9kZT4oZXhlYywgJkpTRXZlbnRUYXJnZXROb2RlVGFibGUsIHRo
aXMsIHByb3BlcnR5TmFtZSwgc2xvdCk7Ci19Ci0KLXZvaWQgSlNFdmVudFRhcmdldE5vZGU6OnB1
dChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgSlNWYWx1
ZSogdmFsdWUsIFB1dFByb3BlcnR5U2xvdCYgc2xvdCkKLXsKLSAgICBsb29rdXBQdXQ8SlNFdmVu
dFRhcmdldE5vZGUsIEpTTm9kZT4oZXhlYywgcHJvcGVydHlOYW1lLCB2YWx1ZSwgJkpTRXZlbnRU
YXJnZXROb2RlVGFibGUsIHRoaXMsIHNsb3QpOwotfQotCi1KU09iamVjdCogSlNFdmVudFRhcmdl
dE5vZGU6OmNyZWF0ZVByb3RvdHlwZShFeGVjU3RhdGUqIGV4ZWMpCi17Ci0gICAgcmV0dXJuIG5l
dyAoZXhlYykgSlNFdmVudFRhcmdldE5vZGVQcm90b3R5cGUoSlNFdmVudFRhcmdldE5vZGVQcm90
b3R5cGU6OmNyZWF0ZVN0cnVjdHVyZUlEKEpTTm9kZVByb3RvdHlwZTo6c2VsZihleGVjKSkpOwot
fQotCi12b2lkIEpTRXZlbnRUYXJnZXROb2RlOjpzZXRMaXN0ZW5lcihFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBKU1ZhbHVlKiBmdW5jKSBjb25zdAotewot
ICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKLSAgICBpZiAo
ZnJhbWUpCi0gICAgICAgIEV2ZW50VGFyZ2V0Tm9kZUNhc3QoaW1wbCgpKS0+c2V0RXZlbnRMaXN0
ZW5lckZvclR5cGUoZXZlbnRUeXBlLCB0b0pTRE9NV2luZG93KGZyYW1lKS0+ZmluZE9yQ3JlYXRl
SlNFdmVudExpc3RlbmVyKGV4ZWMsIGZ1bmMsIHRydWUpKTsKLX0KLQotSlNWYWx1ZSogSlNFdmVu
dFRhcmdldE5vZGU6OmdldExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBj
b25zdAotewotICAgIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gRXZlbnRUYXJnZXROb2RlQ2Fz
dChpbXBsKCkpLT5ldmVudExpc3RlbmVyRm9yVHlwZShldmVudFR5cGUpOwotICAgIEpTRXZlbnRM
aXN0ZW5lcioganNMaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTRXZlbnRMaXN0ZW5lcio+KGxpc3Rl
bmVyKTsKLSAgICBpZiAoanNMaXN0ZW5lciAmJiBqc0xpc3RlbmVyLT5saXN0ZW5lck9iaigpKQot
ICAgICAgICByZXR1cm4ganNMaXN0ZW5lci0+bGlzdGVuZXJPYmooKTsKLQotICAgIHJldHVybiBq
c051bGwoKTsKLX0KLQotdm9pZCBKU0V2ZW50VGFyZ2V0Tm9kZTo6cHVzaEV2ZW50SGFuZGxlclNj
b3BlKEV4ZWNTdGF0ZSosIFNjb3BlQ2hhaW4mKSBjb25zdAotewotfQotCi1FdmVudFRhcmdldE5v
ZGUqIHRvRXZlbnRUYXJnZXROb2RlKEpTVmFsdWUqIHZhbCkKLXsKLSAgICBpZiAoIXZhbCB8fCAh
dmFsLT5pc09iamVjdCgmSlNFdmVudFRhcmdldE5vZGU6OnNfaW5mbykpCi0gICAgICAgIHJldHVy
biAwOwotCi0gICAgcmV0dXJuIHN0YXRpY19jYXN0PEV2ZW50VGFyZ2V0Tm9kZSo+KHN0YXRpY19j
YXN0PEpTRXZlbnRUYXJnZXROb2RlKj4odmFsKS0+aW1wbCgpKTsKLX0KLQotfSAvLyBuYW1lc3Bh
Y2UgV2ViQ29yZQpJbmRleDogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldE5vZGUuaAo9PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09Ci0tLSBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Tm9kZS5oCShyZXZpc2lvbiAzNzA0NSkK
KysrIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXROb2RlLmgJKHdvcmtpbmcgY29weSkKQEAgLTEs
NjMgKzAsMCBAQAotLyoKLSAqIENvcHlyaWdodCAoQykgMjAwNywgMjAwOCBBcHBsZSBJbmMuIEFs
bCByaWdodHMgcmVzZXJ2ZWQuCi0gKiAgICAgICAgICAgKEMpIDIwMDcgTmlrb2xhcyBaaW1tZXJt
YW5uIDx6aW1tZXJtYW5uQGtkZS5vcmc+Ci0gKgotICogUmVkaXN0cmlidXRpb24gYW5kIHVzZSBp
biBzb3VyY2UgYW5kIGJpbmFyeSBmb3Jtcywgd2l0aCBvciB3aXRob3V0Ci0gKiBtb2RpZmljYXRp
b24sIGFyZSBwZXJtaXR0ZWQgcHJvdmlkZWQgdGhhdCB0aGUgZm9sbG93aW5nIGNvbmRpdGlvbnMK
LSAqIGFyZSBtZXQ6Ci0gKiAxLiBSZWRpc3RyaWJ1dGlvbnMgb2Ygc291cmNlIGNvZGUgbXVzdCBy
ZXRhaW4gdGhlIGFib3ZlIGNvcHlyaWdodAotICogICAgbm90aWNlLCB0aGlzIGxpc3Qgb2YgY29u
ZGl0aW9ucyBhbmQgdGhlIGZvbGxvd2luZyBkaXNjbGFpbWVyLgotICogMi4gUmVkaXN0cmlidXRp
b25zIGluIGJpbmFyeSBmb3JtIG11c3QgcmVwcm9kdWNlIHRoZSBhYm92ZSBjb3B5cmlnaHQKLSAq
ICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlz
Y2xhaW1lciBpbiB0aGUKLSAqICAgIGRvY3VtZW50YXRpb24gYW5kL29yIG90aGVyIG1hdGVyaWFs
cyBwcm92aWRlZCB3aXRoIHRoZSBkaXN0cmlidXRpb24uCi0gKgotICogVEhJUyBTT0ZUV0FSRSBJ
UyBQUk9WSURFRCBCWSBBUFBMRSBDT01QVVRFUiwgSU5DLiBgYEFTIElTJycgQU5EIEFOWQotICog
RVhQUkVTUyBPUiBJTVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVE
IFRPLCBUSEUKLSAqIElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJ
VE5FU1MgRk9SIEEgUEFSVElDVUxBUgotICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5P
IEVWRU5UIFNIQUxMIEFQUExFIENPTVBVVEVSLCBJTkMuIE9SCi0gKiBDT05UUklCVVRPUlMgQkUg
TElBQkxFIEZPUiBBTlkgRElSRUNULCBJTkRJUkVDVCwgSU5DSURFTlRBTCwgU1BFQ0lBTCwKLSAq
IEVYRU1QTEFSWSwgT1IgQ09OU0VRVUVOVElBTCBEQU1BR0VTIChJTkNMVURJTkcsIEJVVCBOT1Qg
TElNSVRFRCBUTywKLSAqIFBST0NVUkVNRU5UIE9GIFNVQlNUSVRVVEUgR09PRFMgT1IgU0VSVklD
RVM7IExPU1MgT0YgVVNFLCBEQVRBLCBPUgotICogUFJPRklUUzsgT1IgQlVTSU5FU1MgSU5URVJS
VVBUSU9OKSBIT1dFVkVSIENBVVNFRCBBTkQgT04gQU5ZIFRIRU9SWQotICogT0YgTElBQklMSVRZ
LCBXSEVUSEVSIElOIENPTlRSQUNULCBTVFJJQ1QgTElBQklMSVRZLCBPUiBUT1JUCi0gKiAoSU5D
TFVESU5HIE5FR0xJR0VOQ0UgT1IgT1RIRVJXSVNFKSBBUklTSU5HIElOIEFOWSBXQVkgT1VUIE9G
IFRIRSBVU0UKLSAqIE9GIFRISVMgU09GVFdBUkUsIEVWRU4gSUYgQURWSVNFRCBPRiBUSEUgUE9T
U0lCSUxJVFkgT0YgU1VDSCBEQU1BR0UuIAotICovCi0KLSNpZm5kZWYgSlNFdmVudFRhcmdldE5v
ZGVfaAotI2RlZmluZSBKU0V2ZW50VGFyZ2V0Tm9kZV9oCi0KLSNpbmNsdWRlICJKU05vZGUuaCIK
LSNpbmNsdWRlICJKU0V2ZW50VGFyZ2V0QmFzZS5oIgotI2luY2x1ZGUgPHd0Zi9BbHdheXNJbmxp
bmUuaD4KLQotbmFtZXNwYWNlIFdlYkNvcmUgewotCi0gICAgY2xhc3MgRXZlbnRUYXJnZXROb2Rl
OwotICAgIGNsYXNzIE5vZGU7Ci0KLSAgICBjbGFzcyBKU0V2ZW50VGFyZ2V0Tm9kZSA6IHB1Ymxp
YyBKU05vZGUgewotICAgIHB1YmxpYzoKLSAgICAgICAgSlNFdmVudFRhcmdldE5vZGUoUGFzc1Jl
ZlB0cjxKU0M6OlN0cnVjdHVyZUlEPiwgUGFzc1JlZlB0cjxFdmVudFRhcmdldE5vZGU+KTsKLQot
ICAgICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogY3JlYXRlUHJvdG90eXBlKEpTQzo6RXhlY1N0
YXRlKik7Ci0KLSAgICAgICAgdm9pZCBzZXRMaXN0ZW5lcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0
IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBKU0M6OkpTVmFsdWUqIGZ1bmMpIGNvbnN0OwotICAg
ICAgICBKU0M6OkpTVmFsdWUqIGdldExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlKSBjb25zdDsKLSAgICAgICAgdmlydHVhbCB2b2lkIHB1c2hFdmVudEhhbmRsZXJTY29wZShK
U0M6OkV4ZWNTdGF0ZSosIEpTQzo6U2NvcGVDaGFpbiYpIGNvbnN0OwotCi0gICAgICAgIHZpcnR1
YWwgYm9vbCBnZXRPd25Qcm9wZXJ0eVNsb3QoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBKU0M6Oklk
ZW50aWZpZXImLCBKU0M6OlByb3BlcnR5U2xvdCYpOwotICAgICAgICB2aXJ0dWFsIHZvaWQgcHV0
KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiwgSlNDOjpKU1ZhbHVlKiwg
SlNDOjpQdXRQcm9wZXJ0eVNsb3QmKTsKLQotICAgICAgICB2aXJ0dWFsIGNvbnN0IEpTQzo6Q2xh
c3NJbmZvKiBjbGFzc0luZm8oKSBjb25zdCB7IHJldHVybiAmc19pbmZvOyB9Ci0gICAgICAgIHN0
YXRpYyBjb25zdCBKU0M6OkNsYXNzSW5mbyBzX2luZm87Ci0KLSAgICAgICAgc3RhdGljIGNvbnN0
IGNoYXIqIHByb3RvdHlwZUNsYXNzTmFtZSgpIHsgcmV0dXJuICJFdmVudFRhcmdldE5vZGVQcm90
b3R5cGUiOyB9Ci0gICAgfTsKLQotICAgIHR5cGVkZWYgSlNFdmVudFRhcmdldEJhc2VQcm90b3R5
cGU8SlNFdmVudFRhcmdldE5vZGU+IEpTRXZlbnRUYXJnZXROb2RlUHJvdG90eXBlOwotICAgIEV2
ZW50VGFyZ2V0Tm9kZSogdG9FdmVudFRhcmdldE5vZGUoSlNDOjpKU1ZhbHVlKik7Ci0KLX0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKLQotI2VuZGlmIC8vIEpTRXZlbnRUYXJnZXROb2RlX2gKSW5kZXg6
IGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXROb2RlQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBi
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Tm9kZUN1c3RvbS5jcHAJKHJldmlzaW9uIDApCisrKyBi
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Tm9kZUN1c3RvbS5jcHAJKHJldmlzaW9uIDApCkBAIC0w
LDAgKzEsOTYgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5jLiBBbGwgcmln
aHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4gc291cmNlIGFu
ZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9uLCBhcmUgcGVy
bWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisgKiBhcmUgbWV0
OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0YWluIHRoZSBh
Ym92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRpdGlvbnMgYW5k
IHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9ucyBpbiBiaW5h
cnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAgICBub3RpY2Us
IHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2NsYWltZXIgaW4g
dGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMgcHJvdmlkZWQg
d2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMgUFJPVklERUQg
QlkgQVBQTEUgQ09NUFVURVIsIElOQy4gYGBBUyBJUycnIEFORCBBTlkKKyAqIEVYUFJFU1MgT1Ig
SU1QTElFRCBXQVJSQU5USUVTLCBJTkNMVURJTkcsIEJVVCBOT1QgTElNSVRFRCBUTywgVEhFCisg
KiBJTVBMSUVEIFdBUlJBTlRJRVMgT0YgTUVSQ0hBTlRBQklMSVRZIEFORCBGSVRORVNTIEZPUiBB
IFBBUlRJQ1VMQVIKKyAqIFBVUlBPU0UgQVJFIERJU0NMQUlNRUQuICBJTiBOTyBFVkVOVCBTSEFM
TCBBUFBMRSBDT01QVVRFUiwgSU5DLiBPUgorICogQ09OVFJJQlVUT1JTIEJFIExJQUJMRSBGT1Ig
QU5ZIERJUkVDVCwgSU5ESVJFQ1QsIElOQ0lERU5UQUwsIFNQRUNJQUwsCisgKiBFWEVNUExBUlks
IE9SIENPTlNFUVVFTlRJQUwgREFNQUdFUyAoSU5DTFVESU5HLCBCVVQgTk9UIExJTUlURUQgVE8s
CisgKiBQUk9DVVJFTUVOVCBPRiBTVUJTVElUVVRFIEdPT0RTIE9SIFNFUlZJQ0VTOyBMT1NTIE9G
IFVTRSwgREFUQSwgT1IKKyAqIFBST0ZJVFM7IE9SIEJVU0lORVNTIElOVEVSUlVQVElPTikgSE9X
RVZFUiBDQVVTRUQgQU5EIE9OIEFOWSBUSEVPUlkKKyAqIE9GIExJQUJJTElUWSwgV0hFVEhFUiBJ
TiBDT05UUkFDVCwgU1RSSUNUIExJQUJJTElUWSwgT1IgVE9SVAorICogKElOQ0xVRElORyBORUdM
SUdFTkNFIE9SIE9USEVSV0lTRSkgQVJJU0lORyBJTiBBTlkgV0FZIE9VVCBPRiBUSEUgVVNFCisg
KiBPRiBUSElTIFNPRlRXQVJFLCBFVkVOIElGIEFEVklTRUQgT0YgVEhFIFBPU1NJQklMSVRZIE9G
IFNVQ0ggREFNQUdFLgorICovCisKKyNpbmNsdWRlICJjb25maWcuaCIKKyNpbmNsdWRlICJKU0V2
ZW50VGFyZ2V0Tm9kZS5oIgorCisjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCisjaW5jbHVkZSAi
RG9jdW1lbnQuaCIKKyNpbmNsdWRlICJFdmVudC5oIgorI2luY2x1ZGUgIkV2ZW50VGFyZ2V0Tm9k
ZS5oIgorI2luY2x1ZGUgIkV4Y2VwdGlvbkNvZGUuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2lu
Y2x1ZGUgIkpTRE9NV2luZG93LmgiCisjaW5jbHVkZSAiSlNFdmVudC5oIgorI2luY2x1ZGUgIkpT
RXZlbnRMaXN0ZW5lci5oIgorCit1c2luZyBuYW1lc3BhY2UgSlNDOworCituYW1lc3BhY2UgV2Vi
Q29yZSB7CisKK0pTVmFsdWUqIEpTRXZlbnRUYXJnZXROb2RlOjphZGRFdmVudExpc3RlbmVyKEV4
ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKK3sKKyAgICBGcmFtZSogZnJhbWUg
PSBpbXBsKCktPmRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAg
cmV0dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICBpZiAoUmVmUHRyPEpTRXZlbnRMaXN0ZW5lcj4g
bGlzdGVuZXIgPSB0b0pTRE9NV2luZG93KGZyYW1lKS0+ZmluZE9yQ3JlYXRlSlNFdmVudExpc3Rl
bmVyKGV4ZWMsIGFyZ3MuYXQoZXhlYywgMSkpKQorICAgICAgICBpbXBsKCktPmFkZEV2ZW50TGlz
dGVuZXIoYXJncy5hdChleGVjLCAwKS0+dG9TdHJpbmcoZXhlYyksIGxpc3RlbmVyLnJlbGVhc2Uo
KSwgYXJncy5hdChleGVjLCAyKS0+dG9Cb29sZWFuKGV4ZWMpKTsKKworICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOworfQorCitKU1ZhbHVlKiBKU0V2ZW50VGFyZ2V0Tm9kZTo6cmVtb3ZlRXZlbnRM
aXN0ZW5lcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgRnJh
bWUqIGZyYW1lID0gaW1wbCgpLT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIGlmICghZnJhbWUp
CisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworCisgICAgaWYgKEpTRXZlbnRMaXN0ZW5l
ciogbGlzdGVuZXIgPSB0b0pTRE9NV2luZG93KGZyYW1lKS0+ZmluZEpTRXZlbnRMaXN0ZW5lcihh
cmdzLmF0KGV4ZWMsIDEpKSkKKyAgICAgICAgaW1wbCgpLT5yZW1vdmVFdmVudExpc3RlbmVyKGFy
Z3MuYXQoZXhlYywgMCktPnRvU3RyaW5nKGV4ZWMpLCBsaXN0ZW5lciwgYXJncy5hdChleGVjLCAy
KS0+dG9Cb29sZWFuKGV4ZWMpKTsKKworICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOworfQorCitK
U1ZhbHVlKiBKU0V2ZW50VGFyZ2V0Tm9kZTo6ZGlzcGF0Y2hFdmVudChFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7CisgICAg
SlNWYWx1ZSogcmVzdWx0ID0ganNCb29sZWFuKGltcGwoKS0+ZGlzcGF0Y2hFdmVudCh0b0V2ZW50
KGFyZ3MuYXQoZXhlYywgMCkpLCBlYykpOworICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7
CisgICAgcmV0dXJuIHJlc3VsdDsKK30KKworSlNWYWx1ZSogSlNFdmVudFRhcmdldE5vZGU6Omdl
dExpc3RlbmVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUp
IGNvbnN0Cit7CisgICAgRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBFdmVudFRhcmdldE5vZGVD
YXN0KGltcGwoKSktPmV2ZW50TGlzdGVuZXJGb3JUeXBlKGV2ZW50VHlwZSk7CisgICAgSlNFdmVu
dExpc3RlbmVyKiBqc0xpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNFdmVudExpc3RlbmVyKj4obGlz
dGVuZXIpOworICAgIGlmIChqc0xpc3RlbmVyICYmIGpzTGlzdGVuZXItPmxpc3RlbmVyT2JqKCkp
CisgICAgICAgIHJldHVybiBqc0xpc3RlbmVyLT5saXN0ZW5lck9iaigpOworCisgICAgcmV0dXJu
IGpzTnVsbCgpOworfQorCit2b2lkIEpTRXZlbnRUYXJnZXROb2RlOjpzZXRMaXN0ZW5lcihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBKU1ZhbHVlKiBmdW5j
KQoreworICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+ZG9jdW1lbnQoKS0+ZnJhbWUoKTsKKyAg
ICBpZiAoZnJhbWUpCisgICAgICAgIEV2ZW50VGFyZ2V0Tm9kZUNhc3QoaW1wbCgpKS0+c2V0RXZl
bnRMaXN0ZW5lckZvclR5cGUoZXZlbnRUeXBlLCB0b0pTRE9NV2luZG93KGZyYW1lKS0+ZmluZE9y
Q3JlYXRlSlNFdmVudExpc3RlbmVyKGV4ZWMsIGZ1bmMsIHRydWUpKTsKK30KKwordm9pZCBKU0V2
ZW50VGFyZ2V0Tm9kZTo6cHVzaEV2ZW50SGFuZGxlclNjb3BlKEV4ZWNTdGF0ZSosIFNjb3BlQ2hh
aW4mKSBjb25zdAoreworfQorCit9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBiaW5kaW5n
cy9qcy9KU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBi
aW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlLmNwcAkocmV2aXNpb24g
MzcwNDUpCisrKyBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzksNiArMzksMTAgQEAgdXNpbmcgbmFtZXNwYWNlIFdlYkNv
cmU6OkV2ZW50TmFtZXM7CiAKIEFTU0VSVF9DTEFTU19GSVRTX0lOX0NFTEwoV2ViQ29yZTo6SlNF
dmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZSkKIAorc3RhdGljIEpTVmFsdWUqIGpzRXZlbnRU
YXJnZXRBZGRFdmVudExpc3RlbmVyKEV4ZWNTdGF0ZSosIEpTT2JqZWN0KiwgSlNWYWx1ZSosIGNv
bnN0IEFyZ0xpc3QmKTsKK3N0YXRpYyBKU1ZhbHVlKiBqc0V2ZW50VGFyZ2V0UmVtb3ZlRXZlbnRM
aXN0ZW5lcihFeGVjU3RhdGUqLCBKU09iamVjdCosIEpTVmFsdWUqLCBjb25zdCBBcmdMaXN0Jik7
CitzdGF0aWMgSlNWYWx1ZSoganNFdmVudFRhcmdldERpc3BhdGNoRXZlbnQoRXhlY1N0YXRlKiwg
SlNPYmplY3QqLCBKU1ZhbHVlKiwgY29uc3QgQXJnTGlzdCYpOworCiBzdGF0aWMgSlNWYWx1ZSog
anNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uQWJvcnQoRXhlY1N0YXRlKiwgY29uc3Qg
SWRlbnRpZmllciYsIGNvbnN0IFByb3BlcnR5U2xvdCYpOwogc3RhdGljIHZvaWQgc2V0SlNFdmVu
dFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZU9uQWJvcnQoRXhlY1N0YXRlKiwgSlNPYmplY3QqLCBK
U1ZhbHVlKik7CiBzdGF0aWMgSlNWYWx1ZSoganNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5j
ZU9uQmx1cihFeGVjU3RhdGUqLCBjb25zdCBJZGVudGlmaWVyJiwgY29uc3QgUHJvcGVydHlTbG90
Jik7CkBAIC0xNjUsNiArMTY5LDE0IEBAIG9udW5sb2FkICAgICAganNFdmVudFRhcmdldFNWR0Vs
ZW1lbnRJbnMKIEBlbmQKICovCiAKKy8qCitAYmVnaW4gSlNFdmVudFRhcmdldFNWR0VsZW1lbnRJ
bnN0YW5jZVByb3RvdHlwZVRhYmxlCithZGRFdmVudExpc3RlbmVyICAgIGpzRXZlbnRUYXJnZXRB
ZGRFdmVudExpc3RlbmVyICAgICAgIERvbnREZWxldGV8RnVuY3Rpb24gMworcmVtb3ZlRXZlbnRM
aXN0ZW5lciBqc0V2ZW50VGFyZ2V0UmVtb3ZlRXZlbnRMaXN0ZW5lciAgICBEb250RGVsZXRlfEZ1
bmN0aW9uIDMKK2Rpc3BhdGNoRXZlbnQgICAgICAganNFdmVudFRhcmdldERpc3BhdGNoRXZlbnQg
ICAgICAgICAgRG9udERlbGV0ZXxGdW5jdGlvbiAxCitAZW5kCisqLworCiB1c2luZyBuYW1lc3Bh
Y2UgV2ViQ29yZTsKIAogREVDTEFSRV9KU19FVkVOVF9MSVNURU5FUlMoRXZlbnRUYXJnZXRTVkdF
bGVtZW50SW5zdGFuY2UpCkBAIC0xNzMsNiArMTg1LDE4IEBAIERFQ0xBUkVfSlNfRVZFTlRfTElT
VEVORVJTKEV2ZW50VGFyZ2V0U1YKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCitjb25zdCBDbGFz
c0luZm8gSlNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZVByb3RvdHlwZTo6c19pbmZvID0g
eyAiRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2VQcm90b3R5cGUiLCAwLCAmSlNFdmVudFRh
cmdldFNWR0VsZW1lbnRJbnN0YW5jZVByb3RvdHlwZVRhYmxlLCAwIH07CisKK0pTT2JqZWN0KiBK
U0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlUHJvdG90eXBlOjpzZWxmKEV4ZWNTdGF0ZSog
ZXhlYykKK3sKKyAgICByZXR1cm4gZ2V0RE9NUHJvdG90eXBlPEpTRXZlbnRUYXJnZXRTVkdFbGVt
ZW50SW5zdGFuY2U+KGV4ZWMpOworfQorCitib29sIEpTRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5z
dGFuY2VQcm90b3R5cGU6OmdldE93blByb3BlcnR5U2xvdChFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0
IElkZW50aWZpZXImIHByb3BlcnR5TmFtZSwgUHJvcGVydHlTbG90JiBzbG90KQoreworICAgIHJl
dHVybiBnZXRTdGF0aWNGdW5jdGlvblNsb3Q8SlNPYmplY3Q+KGV4ZWMsICZKU0V2ZW50VGFyZ2V0
U1ZHRWxlbWVudEluc3RhbmNlUHJvdG90eXBlVGFibGUsIHRoaXMsIHByb3BlcnR5TmFtZSwgc2xv
dCk7Cit9CisKIGNvbnN0IENsYXNzSW5mbyBKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNl
OjpzX2luZm8gPSB7ICJFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZSIsICZKU1NWR0VsZW1l
bnRJbnN0YW5jZTo6c19pbmZvLCAmSlNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZVRhYmxl
LCAwIH07CiAKIEpTRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2U6OkpTRXZlbnRUYXJnZXRT
VkdFbGVtZW50SW5zdGFuY2UoUGFzc1JlZlB0cjxTdHJ1Y3R1cmVJRD4gc3RydWN0dXJlLCBQYXNz
UmVmUHRyPEV2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlPiBub2RlKQpAQCAtMjI0LDQgKzI0
OCw1OCBAQCBFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZSogdG9FdmVudFRhCiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKIAordXNpbmcgbmFtZXNwYWNlIFdlYkNvcmU7CisKK0pTVmFsdWUq
IGpzRXZlbnRUYXJnZXRBZGRFdmVudExpc3RlbmVyKEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
LCBKU1ZhbHVlKiB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgaWYgKCF0
aGlzVmFsdWUtPmlzT2JqZWN0KCZKU1NWR0VsZW1lbnRJbnN0YW5jZTo6c19pbmZvKSkKKyAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKKworICAgIEpTRXZlbnRUYXJn
ZXRTVkdFbGVtZW50SW5zdGFuY2UqIGpzRWxlbWVudEluc3RhbmNlID0gc3RhdGljX2Nhc3Q8SlNF
dmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZSo+KHRoaXNWYWx1ZSk7CisgICAgRXZlbnRUYXJn
ZXRTVkdFbGVtZW50SW5zdGFuY2UqIGVsZW1lbnRJbnN0YW5jZSA9IHN0YXRpY19jYXN0PEV2ZW50
VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlKj4oanNFbGVtZW50SW5zdGFuY2UtPmltcGwoKSk7Cisg
ICAgV2ViQ29yZTo6Tm9kZSogZXZlbnROb2RlID0gZWxlbWVudEluc3RhbmNlLT5jb3JyZXNwb25k
aW5nRWxlbWVudCgpOworCisgICAgRnJhbWUqIGZyYW1lID0gZXZlbnROb2RlLT5kb2N1bWVudCgp
LT5mcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgp
OworCisgICAgaWYgKFJlZlB0cjxKU0V2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gdG9KU0RPTVdp
bmRvdyhmcmFtZSktPmZpbmRPckNyZWF0ZUpTRXZlbnRMaXN0ZW5lcihleGVjLCBhcmdzLmF0KGV4
ZWMsIDEpKSkKKyAgICAgICAgZWxlbWVudEluc3RhbmNlLT5hZGRFdmVudExpc3RlbmVyKGFyZ3Mu
YXQoZXhlYywgMCktPnRvU3RyaW5nKGV4ZWMpLCBsaXN0ZW5lci5yZWxlYXNlKCksIGFyZ3MuYXQo
ZXhlYywgMiktPnRvQm9vbGVhbihleGVjKSk7CisKKyAgICByZXR1cm4ganNVbmRlZmluZWQoKTsK
K30KKworSlNWYWx1ZSoganNFdmVudFRhcmdldFJlbW92ZUV2ZW50TGlzdGVuZXIoRXhlY1N0YXRl
KiBleGVjLCBKU09iamVjdCosIEpTVmFsdWUqIHRoaXNWYWx1ZSwgY29uc3QgQXJnTGlzdCYgYXJn
cykKK3sKKyAgICBpZiAoIXRoaXNWYWx1ZS0+aXNPYmplY3QoJkpTU1ZHRWxlbWVudEluc3RhbmNl
OjpzX2luZm8pKQorICAgICAgICByZXR1cm4gdGhyb3dFcnJvcihleGVjLCBUeXBlRXJyb3IpOwor
CisgICAgSlNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZSoganNFbGVtZW50SW5zdGFuY2Ug
PSBzdGF0aWNfY2FzdDxKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlKj4odGhpc1ZhbHVl
KTsKKyAgICBFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZSogZWxlbWVudEluc3RhbmNlID0g
c3RhdGljX2Nhc3Q8RXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2UqPihqc0VsZW1lbnRJbnN0
YW5jZS0+aW1wbCgpKTsKKyAgICBXZWJDb3JlOjpOb2RlKiBldmVudE5vZGUgPSBlbGVtZW50SW5z
dGFuY2UtPmNvcnJlc3BvbmRpbmdFbGVtZW50KCk7CisKKyAgICBGcmFtZSogZnJhbWUgPSBldmVu
dE5vZGUtPmRvY3VtZW50KCktPmZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CisKKyAgICBpZiAoSlNFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9
IHRvSlNET01XaW5kb3coZnJhbWUpLT5maW5kSlNFdmVudExpc3RlbmVyKGFyZ3MuYXQoZXhlYywg
MSkpKQorICAgICAgICBlbGVtZW50SW5zdGFuY2UtPnJlbW92ZUV2ZW50TGlzdGVuZXIoYXJncy5h
dChleGVjLCAwKS0+dG9TdHJpbmcoZXhlYyksIGxpc3RlbmVyLCBhcmdzLmF0KGV4ZWMsIDIpLT50
b0Jvb2xlYW4oZXhlYykpOworCisgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Cit9CisKK0pTVmFs
dWUqIGpzRXZlbnRUYXJnZXREaXNwYXRjaEV2ZW50KEV4ZWNTdGF0ZSogZXhlYywgSlNPYmplY3Qq
LCBKU1ZhbHVlKiB0aGlzVmFsdWUsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCit7CisgICAgaWYgKCF0
aGlzVmFsdWUtPmlzT2JqZWN0KCZKU1NWR0VsZW1lbnRJbnN0YW5jZTo6c19pbmZvKSkKKyAgICAg
ICAgcmV0dXJuIHRocm93RXJyb3IoZXhlYywgVHlwZUVycm9yKTsKKworICAgIEpTRXZlbnRUYXJn
ZXRTVkdFbGVtZW50SW5zdGFuY2UqIGpzRWxlbWVudEluc3RhbmNlID0gc3RhdGljX2Nhc3Q8SlNF
dmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZSo+KHRoaXNWYWx1ZSk7CisgICAgRXZlbnRUYXJn
ZXRTVkdFbGVtZW50SW5zdGFuY2UqIGVsZW1lbnRJbnN0YW5jZSA9IHN0YXRpY19jYXN0PEV2ZW50
VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlKj4oanNFbGVtZW50SW5zdGFuY2UtPmltcGwoKSk7CisK
KyAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKKyAgICBKU1ZhbHVlKiByZXN1bHQgPSBqc0Jvb2xl
YW4oZWxlbWVudEluc3RhbmNlLT5kaXNwYXRjaEV2ZW50KHRvRXZlbnQoYXJncy5hdChleGVjLCAw
KSksIGVjKSk7CisgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKKyAgICByZXR1cm4gcmVz
dWx0OworfQorCiAjZW5kaWYgLy8gRU5BQkxFKFNWRykKSW5kZXg6IGJpbmRpbmdzL2pzL0pTRXZl
bnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2UuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qcy9K
U0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlLmgJKHJldmlzaW9uIDM3MDQ1KQorKysgYmlu
ZGluZ3MvanMvSlNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZS5oCSh3b3JraW5nIGNvcHkp
CkBAIC01MCwxMSArNTAsMjIgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiAgICAgICAgIHZpcnR1
YWwgY29uc3QgSlNDOjpDbGFzc0luZm8qIGNsYXNzSW5mbygpIGNvbnN0IHsgcmV0dXJuICZzX2lu
Zm87IH0KICAgICAgICAgc3RhdGljIGNvbnN0IEpTQzo6Q2xhc3NJbmZvIHNfaW5mbzsKKyAgICB9
OworCisgICAgY2xhc3MgSlNFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZVByb3RvdHlwZSA6
IHB1YmxpYyBKU0M6OkpTT2JqZWN0IHsKKyAgICBwdWJsaWM6CisgICAgICAgIEpTRXZlbnRUYXJn
ZXRTVkdFbGVtZW50SW5zdGFuY2VQcm90b3R5cGUoUGFzc1JlZlB0cjxKU0M6OlN0cnVjdHVyZUlE
PiBzdHJ1Y3R1cmUpCisgICAgICAgICAgICA6IEpTQzo6SlNPYmplY3Qoc3RydWN0dXJlKQorICAg
ICAgICB7CisgICAgICAgIH0KKworICAgICAgICBzdGF0aWMgSlNDOjpKU09iamVjdCogc2VsZihK
U0M6OkV4ZWNTdGF0ZSopOworICAgICAgICB2aXJ0dWFsIGJvb2wgZ2V0T3duUHJvcGVydHlTbG90
KEpTQzo6RXhlY1N0YXRlKiwgY29uc3QgSlNDOjpJZGVudGlmaWVyJiBwcm9wZXJ0eU5hbWUsIEpT
Qzo6UHJvcGVydHlTbG90Jik7CiAKLSAgICAgICAgc3RhdGljIGNvbnN0IGNoYXIqIHByb3RvdHlw
ZUNsYXNzTmFtZSgpIHsgcmV0dXJuICJFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZVByb3Rv
dHlwZSI7IH0KKyAgICAgICAgdmlydHVhbCBjb25zdCBKU0M6OkNsYXNzSW5mbyogY2xhc3NJbmZv
KCkgY29uc3QgeyByZXR1cm4gJnNfaW5mbzsgfQorICAgICAgICBzdGF0aWMgY29uc3QgSlNDOjpD
bGFzc0luZm8gc19pbmZvOwogICAgIH07CiAKLSAgICB0eXBlZGVmIEpTRXZlbnRUYXJnZXRCYXNl
UHJvdG90eXBlPEpTRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2U+IEpTRXZlbnRUYXJnZXRT
VkdFbGVtZW50SW5zdGFuY2VQcm90b3R5cGU7CiAgICAgRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5z
dGFuY2UqIHRvRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2UoSlNDOjpKU1ZhbHVlKik7CiAK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVy
YXRvckpTLnBtCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCShyZXZpc2lvbiAzNzA2NSkKKysrIGJpbmRpbmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpT
LnBtCSh3b3JraW5nIGNvcHkpCkBAIC0xNjAyLDEwICsxNjAyLDcgQEAgc3ViIE5hdGl2ZVRvSlNW
YWx1ZQogICAgICAgICAkaW1wbEluY2x1ZGVzeyJOYW1lTm9kZUxpc3QuaCJ9ID0gMTsKICAgICB9
CiAKLSAgICBpZiAoJHR5cGUgZXEgIkV2ZW50VGFyZ2V0IikgewotICAgICAgICAkaW1wbEluY2x1
ZGVzeyJFdmVudFRhcmdldE5vZGUuaCJ9ID0gMTsKLSAgICAgICAgJGltcGxJbmNsdWRlc3siSlNF
dmVudFRhcmdldE5vZGUuaCJ9ID0gMTsKLSAgICB9IGVsc2lmICgkdHlwZSBlcSAiU1ZHRWxlbWVu
dEluc3RhbmNlIikgeworICAgIGlmICgkdHlwZSBlcSAiU1ZHRWxlbWVudEluc3RhbmNlIikgewog
ICAgICAgICAkaW1wbEluY2x1ZGVzeyJFdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZS5oIn0g
PSAxOwogICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3Rh
bmNlLmgifSA9IDE7CiAgICAgfSBlbHNpZiAoJHR5cGUgZXEgIkRPTU9iamVjdCIpIHsKSW5kZXg6
IGRvbS9FdmVudFRhcmdldE5vZGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGRvbS9FdmVudFRhcmdldE5v
ZGUuaWRsCShyZXZpc2lvbiAwKQorKysgZG9tL0V2ZW50VGFyZ2V0Tm9kZS5pZGwJKHJldmlzaW9u
IDApCkBAIC0wLDAgKzEsODUgQEAKKy8qCisgKiBDb3B5cmlnaHQgKEMpIDIwMDggQXBwbGUgSW5j
LiBBbGwgcmlnaHRzIHJlc2VydmVkLgorICoKKyAqIFJlZGlzdHJpYnV0aW9uIGFuZCB1c2UgaW4g
c291cmNlIGFuZCBiaW5hcnkgZm9ybXMsIHdpdGggb3Igd2l0aG91dAorICogbW9kaWZpY2F0aW9u
LCBhcmUgcGVybWl0dGVkIHByb3ZpZGVkIHRoYXQgdGhlIGZvbGxvd2luZyBjb25kaXRpb25zCisg
KiBhcmUgbWV0OgorICogMS4gUmVkaXN0cmlidXRpb25zIG9mIHNvdXJjZSBjb2RlIG11c3QgcmV0
YWluIHRoZSBhYm92ZSBjb3B5cmlnaHQKKyAqICAgIG5vdGljZSwgdGhpcyBsaXN0IG9mIGNvbmRp
dGlvbnMgYW5kIHRoZSBmb2xsb3dpbmcgZGlzY2xhaW1lci4KKyAqIDIuIFJlZGlzdHJpYnV0aW9u
cyBpbiBiaW5hcnkgZm9ybSBtdXN0IHJlcHJvZHVjZSB0aGUgYWJvdmUgY29weXJpZ2h0CisgKiAg
ICBub3RpY2UsIHRoaXMgbGlzdCBvZiBjb25kaXRpb25zIGFuZCB0aGUgZm9sbG93aW5nIGRpc2Ns
YWltZXIgaW4gdGhlCisgKiAgICBkb2N1bWVudGF0aW9uIGFuZC9vciBvdGhlciBtYXRlcmlhbHMg
cHJvdmlkZWQgd2l0aCB0aGUgZGlzdHJpYnV0aW9uLgorICoKKyAqIFRISVMgU09GVFdBUkUgSVMg
UFJPVklERUQgQlkgQVBQTEUgSU5DLiBgYEFTIElTJycgQU5EIEFOWQorICogRVhQUkVTUyBPUiBJ
TVBMSUVEIFdBUlJBTlRJRVMsIElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLCBUSEUKKyAq
IElNUExJRUQgV0FSUkFOVElFUyBPRiBNRVJDSEFOVEFCSUxJVFkgQU5EIEZJVE5FU1MgRk9SIEEg
UEFSVElDVUxBUgorICogUFVSUE9TRSBBUkUgRElTQ0xBSU1FRC4gIElOIE5PIEVWRU5UIFNIQUxM
IEFQUExFIElOQy4gT1IKKyAqIENPTlRSSUJVVE9SUyBCRSBMSUFCTEUgRk9SIEFOWSBESVJFQ1Qs
IElORElSRUNULCBJTkNJREVOVEFMLCBTUEVDSUFMLAorICogRVhFTVBMQVJZLCBPUiBDT05TRVFV
RU5USUFMIERBTUFHRVMgKElOQ0xVRElORywgQlVUIE5PVCBMSU1JVEVEIFRPLAorICogUFJPQ1VS
RU1FTlQgT0YgU1VCU1RJVFVURSBHT09EUyBPUiBTRVJWSUNFUzsgTE9TUyBPRiBVU0UsIERBVEEs
IE9SCisgKiBQUk9GSVRTOyBPUiBCVVNJTkVTUyBJTlRFUlJVUFRJT04pIEhPV0VWRVIgQ0FVU0VE
IEFORCBPTiBBTlkgVEhFT1JZCisgKiBPRiBMSUFCSUxJVFksIFdIRVRIRVIgSU4gQ09OVFJBQ1Qs
IFNUUklDVCBMSUFCSUxJVFksIE9SIFRPUlQKKyAqIChJTkNMVURJTkcgTkVHTElHRU5DRSBPUiBP
VEhFUldJU0UpIEFSSVNJTkcgSU4gQU5ZIFdBWSBPVVQgT0YgVEhFIFVTRQorICogT0YgVEhJUyBT
T0ZUV0FSRSwgRVZFTiBJRiBBRFZJU0VEIE9GIFRIRSBQT1NTSUJJTElUWSBPRiBTVUNIIERBTUFH
RS4gCisgKi8KKworbW9kdWxlIGNvcmUgeworCisgICAgaW50ZXJmYWNlIFsKKyAgICAgICAgQ3Vz
dG9tTGlzdGVuZXJzLAorICAgICAgICBDdXN0b21QdXNoRXZlbnRIYW5kbGVyU2NvcGUsCisgICAg
ICAgIEdlbmVyYXRlTmF0aXZlQ29udmVydGVyCisgICAgXSBFdmVudFRhcmdldE5vZGUgOiBOb2Rl
IHsKKyAgICAgICAgLy8gRXZlbnRUYXJnZXQKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb25hYm9ydDsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25ibHVyOworICAg
ICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNoYW5nZTsKKyAgICAgICAgYXR0cmlidXRl
IEV2ZW50TGlzdGVuZXIgb25jbGljazsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIg
b25jb250ZXh0bWVudTsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25kYmxjbGlj
azsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25lcnJvcjsKKyAgICAgICAgYXR0
cmlidXRlIEV2ZW50TGlzdGVuZXIgb25mb2N1czsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlz
dGVuZXIgb25pbnB1dDsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25rZXlkb3du
OworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmtleXByZXNzOworICAgICAgICBh
dHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmtleXVwOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRM
aXN0ZW5lciBvbmxvYWQ7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ubW91c2Vk
b3duOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm1vdXNlbW92ZTsKKyAgICAg
ICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25tb3VzZW91dDsKKyAgICAgICAgYXR0cmlidXRl
IEV2ZW50TGlzdGVuZXIgb25tb3VzZW92ZXI7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3Rl
bmVyIG9ubW91c2V1cDsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25tb3VzZXdo
ZWVsOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmJlZm9yZWN1dDsKKyAgICAg
ICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jdXQ7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVu
dExpc3RlbmVyIG9uYmVmb3JlY29weTsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIg
b25jb3B5OworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmJlZm9yZXBhc3RlOwor
ICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnBhc3RlOworICAgICAgICBhdHRyaWJ1
dGUgRXZlbnRMaXN0ZW5lciBvbmRyYWdlbnRlcjsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlz
dGVuZXIgb25kcmFnb3ZlcjsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25kcmFn
bGVhdmU7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZHJvcDsKKyAgICAgICAg
YXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25kcmFnc3RhcnQ7CisgICAgICAgIGF0dHJpYnV0ZSBF
dmVudExpc3RlbmVyIG9uZHJhZzsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25k
cmFnZW5kOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnJlc2V0OworICAgICAg
ICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnJlc2l6ZTsKKyAgICAgICAgYXR0cmlidXRlIEV2
ZW50TGlzdGVuZXIgb25zY3JvbGw7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
c2VhcmNoOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnNlbGVjdDsKKyAgICAg
ICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25zZWxlY3RzdGFydDsKKyAgICAgICAgYXR0cmli
dXRlIEV2ZW50TGlzdGVuZXIgb25zdWJtaXQ7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3Rl
bmVyIG9udW5sb2FkOworCisgICAgICAgIFtDdXN0b21dIHZvaWQgYWRkRXZlbnRMaXN0ZW5lcihp
biBET01TdHJpbmcgdHlwZSwgCisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCAKKyAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgIGluIGJvb2xlYW4gdXNlQ2FwdHVyZSk7CisgICAgICAgIFtDdXN0b21dIHZv
aWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwgCisgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCAK
KyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gdXNl
Q2FwdHVyZSk7CisgICAgICAgIFtDdXN0b21dIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVu
dCBldmVudCkKKyAgICAgICAgICAgIHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CisgICAgfTsKKwor
fQo=
</data>

          </attachment>
          <attachment
              isobsolete="1"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23960</attachid>
            <date>2008-09-30 16:22:15 -0700</date>
            <delta_ts>2008-09-30 17:39:51 -0700</delta_ts>
            <desc>patch 2 - standardize EventListeners</desc>
            <filename>moreEventListener.diff</filename>
            <type>text/plain</type>
            <size>67923</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM3MTIx
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMTQ1IEBACisyMDA4LTA5
LTMwICBTYW0gV2VpbmlnICA8c2FtQHdlYmtpdC5vcmc+CisKKyAgICAgICAgUmV2aWV3ZWQgYnkg
Tk9CT0RZIChPT1BTISkuCisKKyAgICAgICAgTW9yZSBmb3IgaHR0cHM6Ly9idWdzLndlYmtpdC5v
cmcvc2hvd19idWcuY2dpP2lkPTIxMTIyCisgICAgICAgIEF1dG9nZW5lcmF0ZSBKUyBldmVudCBs
aXN0ZW5lcnMKKworICAgICAgICAtIE1ha2UgRXZlbnRMaXN0ZW5lciBnZXR0ZXIvc2V0dGVycyBu
YW1lcyBpbiBjKysgZmlsZXMgbWF0Y2ggdGhvc2UgaW4gCisgICAgICAgICAgSlMgKGllLiBvbkxv
YWRMaXN0ZW5lciAtPiBvbmxvYWQpLgorICAgICAgICAtIEFkZCBzdGFuZGFyZCB3YXkgdG8gYWNj
ZXNzIHRoZSBmcmFtZSBhc3NvY2lhdGVkIHdpdGggdGhlIEV2ZW50VGFyZ2V0CisgICAgICAgICAg
Zm9yIEV2ZW50TGlzdGVuZXIgbG9va3VwLgorICAgICAgICAtIEF1dG9nZW5lcmF0ZSBkaXNwYXRj
aEV2ZW50LCBpdCB3YXNuJ3QgZG9pbmcgYW55dGhpbmcgY3VzdG9tLgorCisgICAgICAgICogYmlu
ZGluZ3MvanMvSlNET01BcHBsaWNhdGlvbkNhY2hlQ3VzdG9tLmNwcDoKKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NQXBwbGljYXRpb25DYWNoZTo6bWFyayk6CisgICAgICAgIChXZWJDb3JlOjpKU0RP
TUFwcGxpY2F0aW9uQ2FjaGU6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01BcHBsaWNhdGlvbkNhY2hlOjpyZW1vdmVFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NQXBwbGljYXRpb25DYWNoZTo6c2V0T25jaGVja2luZyk6CisgICAgICAgIChX
ZWJDb3JlOjpKU0RPTUFwcGxpY2F0aW9uQ2FjaGU6Om9uY2hlY2tpbmcpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01BcHBsaWNhdGlvbkNhY2hlOjpzZXRPbmVycm9yKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NQXBwbGljYXRpb25DYWNoZTo6b25lcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpK
U0RPTUFwcGxpY2F0aW9uQ2FjaGU6OnNldE9ubm91cGRhdGUpOgorICAgICAgICAoV2ViQ29yZTo6
SlNET01BcHBsaWNhdGlvbkNhY2hlOjpvbm5vdXBkYXRlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
RE9NQXBwbGljYXRpb25DYWNoZTo6c2V0T25kb3dubG9hZGluZyk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RPTUFwcGxpY2F0aW9uQ2FjaGU6Om9uZG93bmxvYWRpbmcpOgorICAgICAgICAoV2ViQ29y
ZTo6SlNET01BcHBsaWNhdGlvbkNhY2hlOjpzZXRPbnByb2dyZXNzKToKKyAgICAgICAgKFdlYkNv
cmU6OkpTRE9NQXBwbGljYXRpb25DYWNoZTo6b25wcm9ncmVzcyk6CisgICAgICAgIChXZWJDb3Jl
OjpKU0RPTUFwcGxpY2F0aW9uQ2FjaGU6OnNldE9udXBkYXRlcmVhZHkpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01BcHBsaWNhdGlvbkNhY2hlOjpvbnVwZGF0ZXJlYWR5KToKKyAgICAgICAgKFdl
YkNvcmU6OkpTRE9NQXBwbGljYXRpb25DYWNoZTo6c2V0T25jYWNoZWQpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNET01BcHBsaWNhdGlvbkNhY2hlOjpvbmNhY2hlZCk6CisgICAgICAgICogYmluZGlu
Z3MvanMvSlNFdmVudFRhcmdldE5vZGVDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29yZTo6SlNF
dmVudFRhcmdldE5vZGU6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNF
dmVudFRhcmdldE5vZGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6
SlNFdmVudFRhcmdldE5vZGU6OmdldExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6OkpTRXZl
bnRUYXJnZXROb2RlOjpzZXRMaXN0ZW5lcik6CisgICAgICAgICogYmluZGluZ3MvanMvSlNNZXNz
YWdlUG9ydEN1c3RvbS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0OjptYXJr
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTTWVzc2FnZVBvcnQ6OmFkZEV2ZW50TGlzdGVuZXIpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlUG9ydDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6Cisg
ICAgICAgIChXZWJDb3JlOjpKU01lc3NhZ2VQb3J0OjpzZXRPbm1lc3NhZ2UpOgorICAgICAgICAo
V2ViQ29yZTo6SlNNZXNzYWdlUG9ydDo6b25tZXNzYWdlKToKKyAgICAgICAgKFdlYkNvcmU6OkpT
TWVzc2FnZVBvcnQ6OnNldE9uY2xvc2UpOgorICAgICAgICAoV2ViQ29yZTo6SlNNZXNzYWdlUG9y
dDo6b25jbG9zZSk6CisgICAgICAgICogYmluZGluZ3MvanMvSlNYTUxIdHRwUmVxdWVzdEN1c3Rv
bS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0OjptYXJrKToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6Om9ucmVhZHlzdGF0ZWNoYW5nZSk6CisgICAg
ICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0OjpzZXRPbnJlYWR5c3RhdGVjaGFuZ2UpOgor
ICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdDo6b25hYm9ydCk6CisgICAgICAgIChX
ZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0OjpzZXRPbmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6
OkpTWE1MSHR0cFJlcXVlc3Q6Om9uZXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRw
UmVxdWVzdDo6c2V0T25lcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0
OjpvbmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdDo6c2V0T25sb2Fk
KToKKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6Om9ubG9hZHN0YXJ0KToKKyAg
ICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6OnNldE9ubG9hZHN0YXJ0KToKKyAgICAg
ICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3Q6Om9ucHJvZ3Jlc3MpOgorICAgICAgICAoV2Vi
Q29yZTo6SlNYTUxIdHRwUmVxdWVzdDo6c2V0T25wcm9ncmVzcyk6CisgICAgICAgIChXZWJDb3Jl
OjpKU1hNTEh0dHBSZXF1ZXN0OjphZGRFdmVudExpc3RlbmVyKToKKyAgICAgICAgKFdlYkNvcmU6
OkpTWE1MSHR0cFJlcXVlc3Q6OnJlbW92ZUV2ZW50TGlzdGVuZXIpOgorICAgICAgICAqIGJpbmRp
bmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RVcGxvYWRDdXN0b20uY3BwOgorICAgICAgICAoV2ViQ29y
ZTo6SlNYTUxIdHRwUmVxdWVzdFVwbG9hZDo6bWFyayk6CisgICAgICAgIChXZWJDb3JlOjpKU1hN
TEh0dHBSZXF1ZXN0VXBsb2FkOjpvbmFib3J0KToKKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0
cFJlcXVlc3RVcGxvYWQ6OnNldE9uYWJvcnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRw
UmVxdWVzdFVwbG9hZDo6b25lcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1
ZXN0VXBsb2FkOjpzZXRPbmVycm9yKToKKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVl
c3RVcGxvYWQ6Om9ubG9hZCk6CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0VXBs
b2FkOjpzZXRPbmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdFVwbG9h
ZDo6b25sb2Fkc3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdFVwbG9h
ZDo6c2V0T25sb2Fkc3RhcnQpOgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVxdWVzdFVw
bG9hZDo6b25wcm9ncmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpKU1hNTEh0dHBSZXF1ZXN0VXBs
b2FkOjpzZXRPbnByb2dyZXNzKToKKyAgICAgICAgKFdlYkNvcmU6OkpTWE1MSHR0cFJlcXVlc3RV
cGxvYWQ6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6SlNYTUxIdHRwUmVx
dWVzdFVwbG9hZDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcik6CisgICAgICAgICogYmluZGluZ3Mvc2Ny
aXB0cy9Db2RlR2VuZXJhdG9ySlMucG06CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0Lmg6Cisg
ICAgICAgICogZG9tL0V2ZW50VGFyZ2V0Tm9kZS5jcHA6CisgICAgICAgIChXZWJDb3JlOjpFdmVu
dFRhcmdldE5vZGU6OmFzc29jaWF0ZWRGcmFtZSk6CisgICAgICAgICogZG9tL0V2ZW50VGFyZ2V0
Tm9kZS5oOgorICAgICAgICAqIGRvbS9FdmVudFRhcmdldE5vZGUuaWRsOgorICAgICAgICAqIGRv
bS9NZXNzYWdlUG9ydC5jcHA6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6YXNzb2Np
YXRlZEZyYW1lKToKKyAgICAgICAgKiBkb20vTWVzc2FnZVBvcnQuaDoKKyAgICAgICAgKFdlYkNv
cmU6Ok1lc3NhZ2VQb3J0OjpzZXRPbm1lc3NhZ2UpOgorICAgICAgICAoV2ViQ29yZTo6TWVzc2Fn
ZVBvcnQ6Om9ubWVzc2FnZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6c2V0T25j
bG9zZSk6CisgICAgICAgIChXZWJDb3JlOjpNZXNzYWdlUG9ydDo6b25jbG9zZSk6CisgICAgICAg
ICogZG9tL01lc3NhZ2VQb3J0LmlkbDoKKyAgICAgICAgKiBsb2FkZXIvYXBwY2FjaGUvRE9NQXBw
bGljYXRpb25DYWNoZS5oOgorICAgICAgICAoV2ViQ29yZTo6RE9NQXBwbGljYXRpb25DYWNoZTo6
c2V0T25jaGVja2luZyk6CisgICAgICAgIChXZWJDb3JlOjpET01BcHBsaWNhdGlvbkNhY2hlOjpv
bmNoZWNraW5nKToKKyAgICAgICAgKFdlYkNvcmU6OkRPTUFwcGxpY2F0aW9uQ2FjaGU6OnNldE9u
ZXJyb3IpOgorICAgICAgICAoV2ViQ29yZTo6RE9NQXBwbGljYXRpb25DYWNoZTo6b25lcnJvcik6
CisgICAgICAgIChXZWJDb3JlOjpET01BcHBsaWNhdGlvbkNhY2hlOjpzZXRPbm5vdXBkYXRlKToK
KyAgICAgICAgKFdlYkNvcmU6OkRPTUFwcGxpY2F0aW9uQ2FjaGU6Om9ubm91cGRhdGUpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NQXBwbGljYXRpb25DYWNoZTo6c2V0T25kb3dubG9hZGluZyk6Cisg
ICAgICAgIChXZWJDb3JlOjpET01BcHBsaWNhdGlvbkNhY2hlOjpvbmRvd25sb2FkaW5nKToKKyAg
ICAgICAgKFdlYkNvcmU6OkRPTUFwcGxpY2F0aW9uQ2FjaGU6OnNldE9ucHJvZ3Jlc3MpOgorICAg
ICAgICAoV2ViQ29yZTo6RE9NQXBwbGljYXRpb25DYWNoZTo6b25wcm9ncmVzcyk6CisgICAgICAg
IChXZWJDb3JlOjpET01BcHBsaWNhdGlvbkNhY2hlOjpzZXRPbnVwZGF0ZXJlYWR5KToKKyAgICAg
ICAgKFdlYkNvcmU6OkRPTUFwcGxpY2F0aW9uQ2FjaGU6Om9udXBkYXRlcmVhZHkpOgorICAgICAg
ICAoV2ViQ29yZTo6RE9NQXBwbGljYXRpb25DYWNoZTo6c2V0T25jYWNoZWQpOgorICAgICAgICAo
V2ViQ29yZTo6RE9NQXBwbGljYXRpb25DYWNoZTo6b25jYWNoZWQpOgorICAgICAgICAoV2ViQ29y
ZTo6RE9NQXBwbGljYXRpb25DYWNoZTo6YXNzb2NpYXRlZEZyYW1lKToKKyAgICAgICAgKiBsb2Fk
ZXIvYXBwY2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5pZGw6CisgICAgICAgICogc3ZnL0V2ZW50
VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlLmNwcDoKKyAgICAgICAgKFdlYkNvcmU6OkV2ZW50VGFy
Z2V0U1ZHRWxlbWVudEluc3RhbmNlOjphc3NvY2lhdGVkRnJhbWUpOgorICAgICAgICAoV2ViQ29y
ZTo6RXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2U6OmFkZEV2ZW50TGlzdGVuZXIpOgorICAg
ICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFuY2U6OnJlbW92ZUV2ZW50
TGlzdGVuZXIpOgorICAgICAgICAoV2ViQ29yZTo6RXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFu
Y2U6OmRpc3BhdGNoRXZlbnQpOgorICAgICAgICAqIHN2Zy9FdmVudFRhcmdldFNWR0VsZW1lbnRJ
bnN0YW5jZS5oOgorICAgICAgICAqIHhtbC9YTUxIdHRwUmVxdWVzdC5jcHA6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6YXNzb2NpYXRlZEZyYW1lKToKKyAgICAgICAgKiB4bWwv
WE1MSHR0cFJlcXVlc3QuaDoKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpzZXRP
bnJlYWR5c3RhdGVjaGFuZ2UpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6Om9u
cmVhZHlzdGF0ZWNoYW5nZSk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c2V0
T25hYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6b25hYm9ydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c2V0T25lcnJvcik6CisgICAgICAgIChX
ZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6b25lcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxI
dHRwUmVxdWVzdDo6c2V0T25sb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0
OjpvbmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3Q6OnNldE9ubG9hZHN0
YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0OjpvbmxvYWRzdGFydCk6Cisg
ICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6c2V0T25wcm9ncmVzcyk6CisgICAgICAg
IChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdDo6b25wcm9ncmVzcyk6CisgICAgICAgICogeG1sL1hN
TEh0dHBSZXF1ZXN0LmlkbDoKKyAgICAgICAgKiB4bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuY3Bw
OgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3RVcGxvYWQ6OmFzc29jaWF0ZWRGcmFt
ZSk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmg6CisgICAgICAgIChXZWJD
b3JlOjpYTUxIdHRwUmVxdWVzdFVwbG9hZDo6c2V0T25hYm9ydCk6CisgICAgICAgIChXZWJDb3Jl
OjpYTUxIdHRwUmVxdWVzdFVwbG9hZDo6b25hYm9ydCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxI
dHRwUmVxdWVzdFVwbG9hZDo6c2V0T25lcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRw
UmVxdWVzdFVwbG9hZDo6b25lcnJvcik6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVz
dFVwbG9hZDo6c2V0T25sb2FkKToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0VXBs
b2FkOjpvbmxvYWQpOgorICAgICAgICAoV2ViQ29yZTo6WE1MSHR0cFJlcXVlc3RVcGxvYWQ6OnNl
dE9ubG9hZHN0YXJ0KToKKyAgICAgICAgKFdlYkNvcmU6OlhNTEh0dHBSZXF1ZXN0VXBsb2FkOjpv
bmxvYWRzdGFydCk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdFVwbG9hZDo6c2V0
T25wcm9ncmVzcyk6CisgICAgICAgIChXZWJDb3JlOjpYTUxIdHRwUmVxdWVzdFVwbG9hZDo6b25w
cm9ncmVzcyk6CisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmlkbDoKKwogMjAw
OC0wOS0zMCAgS2V2aW4gTWNDdWxsb3VnaCAgPGttY2N1bGxvdWdoQGFwcGxlLmNvbT4KIAogICAg
ICAgICBSZXZpZXdlZCBieSBPbGl2ZXIgSHVudC4KSW5kZXg6IGJpbmRpbmdzL2pzL0pTRE9NQXBw
bGljYXRpb25DYWNoZUN1c3RvbS5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gYmluZGluZ3MvanMvSlNET01B
cHBsaWNhdGlvbkNhY2hlQ3VzdG9tLmNwcAkocmV2aXNpb24gMzcxMjEpCisrKyBiaW5kaW5ncy9q
cy9KU0RPTUFwcGxpY2F0aW9uQ2FjaGVDdXN0b20uY3BwCSh3b3JraW5nIGNvcHkpCkBAIC00MSw3
ICs0MSw0MyBAQAogdXNpbmcgbmFtZXNwYWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewor
Cit2b2lkIEpTRE9NQXBwbGljYXRpb25DYWNoZTo6bWFyaygpCit7CisgICAgRE9NT2JqZWN0Ojpt
YXJrKCk7CisgCisgICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9
IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4obV9pbXBsLT5vbmNoZWNr
aW5nKCkpKQorICAgICAgICBsaXN0ZW5lci0+bWFyaygpOworICAgICAgICAKKyAgICBpZiAoSlNV
bnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNVbnByb3Rl
Y3RlZEV2ZW50TGlzdGVuZXIqPihtX2ltcGwtPm9uZXJyb3IoKSkpCisgICAgICAgIGxpc3RlbmVy
LT5tYXJrKCk7CisKKyAgICBpZiAoSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVy
ID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqPihtX2ltcGwtPm9ubm91
cGRhdGUoKSkpCisgICAgICAgIGxpc3RlbmVyLT5tYXJrKCk7CisKKyAgICBpZiAoSlNVbnByb3Rl
Y3RlZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2
ZW50TGlzdGVuZXIqPihtX2ltcGwtPm9uZG93bmxvYWRpbmcoKSkpCisgICAgICAgIGxpc3RlbmVy
LT5tYXJrKCk7CisKKyAgICBpZiAoSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVy
ID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqPihtX2ltcGwtPm9ucHJv
Z3Jlc3MoKSkpCisgICAgICAgIGxpc3RlbmVyLT5tYXJrKCk7CisKKyAgICBpZiAoSlNVbnByb3Rl
Y3RlZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2
ZW50TGlzdGVuZXIqPihtX2ltcGwtPm9udXBkYXRlcmVhZHkoKSkpCisgICAgICAgIGxpc3RlbmVy
LT5tYXJrKCk7CisKKyAgICBpZiAoSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVy
ID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqPihtX2ltcGwtPm9uY2Fj
aGVkKCkpKQorICAgICAgICBsaXN0ZW5lci0+bWFyaygpOwogICAgIAorICAgIHR5cGVkZWYgRE9N
QXBwbGljYXRpb25DYWNoZTo6RXZlbnRMaXN0ZW5lcnNNYXAgRXZlbnRMaXN0ZW5lcnNNYXA7Cisg
ICAgdHlwZWRlZiBET01BcHBsaWNhdGlvbkNhY2hlOjpMaXN0ZW5lclZlY3RvciBMaXN0ZW5lclZl
Y3RvcjsKKyAgICBFdmVudExpc3RlbmVyc01hcCYgZXZlbnRMaXN0ZW5lcnMgPSBtX2ltcGwtPmV2
ZW50TGlzdGVuZXJzKCk7CisgICAgZm9yIChFdmVudExpc3RlbmVyc01hcDo6aXRlcmF0b3IgbWFw
SXRlciA9IGV2ZW50TGlzdGVuZXJzLmJlZ2luKCk7IG1hcEl0ZXIgIT0gZXZlbnRMaXN0ZW5lcnMu
ZW5kKCk7ICsrbWFwSXRlcikgeworICAgICAgICBmb3IgKExpc3RlbmVyVmVjdG9yOjppdGVyYXRv
ciB2ZWNJdGVyID0gbWFwSXRlci0+c2Vjb25kLmJlZ2luKCk7IHZlY0l0ZXIgIT0gbWFwSXRlci0+
c2Vjb25kLmVuZCgpOyArK3ZlY0l0ZXIpIHsKKyAgICAgICAgICAgIEpTVW5wcm90ZWN0ZWRFdmVu
dExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3Rl
bmVyKj4odmVjSXRlci0+Z2V0KCkpOworICAgICAgICAgICAgbGlzdGVuZXItPm1hcmsoKTsKKyAg
ICAgICAgfQorICAgIH0KK30KKwogSlNWYWx1ZSogSlNET01BcHBsaWNhdGlvbkNhY2hlOjphZGQo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewogICAgIEZyYW1lKiBmcmFt
ZSA9IGFzSlNET01XaW5kb3coZXhlYy0+ZHluYW1pY0dsb2JhbE9iamVjdCgpKS0+aW1wbCgpLT5m
cmFtZSgpOwpAQCAtNzAsNyArMTA2LDcgQEAgSlNWYWx1ZSogSlNET01BcHBsaWNhdGlvbkNhY2hl
OjpyZW1vdmUoRQogICAgIAogSlNWYWx1ZSogSlNET01BcHBsaWNhdGlvbkNhY2hlOjphZGRFdmVu
dExpc3RlbmVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKLSAgICBG
cmFtZSogZnJhbWUgPSBpbXBsKCktPmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1lID0gaW1wbCgp
LT5hc3NvY2lhdGVkRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKICAgICBSZWZQdHI8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXI+IGxpc3Rl
bmVyID0gdG9KU0RPTVdpbmRvdyhmcmFtZSktPmZpbmRPckNyZWF0ZUpTVW5wcm90ZWN0ZWRFdmVu
dExpc3RlbmVyKGV4ZWMsIGFyZ3MuYXQoZXhlYywgMSksIHRydWUpOwpAQCAtODIsNyArMTE4LDcg
QEAgSlNWYWx1ZSogSlNET01BcHBsaWNhdGlvbkNhY2hlOjphZGRFdmVudAogCiBKU1ZhbHVlKiBK
U0RPTUFwcGxpY2F0aW9uQ2FjaGU6OnJlbW92ZUV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlKiBleGVj
LCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewotICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+ZnJh
bWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCktPmFzc29jaWF0ZWRGcmFtZSgpOwogICAg
IGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIEpTVW5wcm90
ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHRvSlNET01XaW5kb3coZnJhbWUpLT5maW5k
SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgYXJncy5hdChleGVjLCAxKSwgdHJ1ZSk7
CkBAIC05MywyNCArMTI5LDE3IEBAIEpTVmFsdWUqIEpTRE9NQXBwbGljYXRpb25DYWNoZTo6cmVt
b3ZlRXYKICAgICAKIH0KICAgICAKLUpTVmFsdWUqIEpTRE9NQXBwbGljYXRpb25DYWNoZTo6ZGlz
cGF0Y2hFdmVudChKU0M6OkV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKLXsK
LSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICAKLSAgICBib29sIHJlc3VsdCA9IGltcGwo
KS0+ZGlzcGF0Y2hFdmVudCh0b0V2ZW50KGFyZ3MuYXQoZXhlYywgMCkpLCBlYyk7Ci0gICAgc2V0
RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICByZXR1cm4ganNCb29sZWFuKHJlc3VsdCk7ICAg
IAotfQotCiB2b2lkIEpTRE9NQXBwbGljYXRpb25DYWNoZTo6c2V0T25jaGVja2luZyhFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUqIHZhbHVlKQogewotICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBs
KCktPmZyYW1lKCkpCi0gICAgICAgIGltcGwoKS0+c2V0T25DaGVja2luZ0xpc3RlbmVyKHRvSlNE
T01XaW5kb3coZnJhbWUpLT5maW5kT3JDcmVhdGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihl
eGVjLCB2YWx1ZSwgdHJ1ZSkpOworICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+YXNzb2NpYXRl
ZEZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIGltcGwoKS0+
c2V0T25jaGVja2luZyh0b0pTRE9NV2luZG93KGZyYW1lKS0+ZmluZE9yQ3JlYXRlSlNVbnByb3Rl
Y3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgdmFsdWUsIHRydWUpKTsKIH0KIAogSlNWYWx1ZSogSlNE
T01BcHBsaWNhdGlvbkNhY2hlOjpvbmNoZWNraW5nKEV4ZWNTdGF0ZSopIGNvbnN0CiB7Ci0gICAg
aWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpT
VW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4oaW1wbCgpLT5vbkNoZWNraW5nTGlzdGVuZXIoKSkp
CisgICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19j
YXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4oaW1wbCgpLT5vbmNoZWNraW5nKCkpKQog
ICAgICAgICBpZiAoSlNPYmplY3QqIGxpc3RlbmVyT2JqID0gbGlzdGVuZXItPmxpc3RlbmVyT2Jq
KCkpCiAgICAgICAgICAgICByZXR1cm4gbGlzdGVuZXJPYmo7CiAgICAgcmV0dXJuIGpzTnVsbCgp
OwpAQCAtMTE4LDEzICsxNDcsMTUgQEAgSlNWYWx1ZSogSlNET01BcHBsaWNhdGlvbkNhY2hlOjpv
bmNoZWNraQogCiB2b2lkIEpTRE9NQXBwbGljYXRpb25DYWNoZTo6c2V0T25lcnJvcihFeGVjU3Rh
dGUqIGV4ZWMsIEpTVmFsdWUqIHZhbHVlKQogewotICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBs
KCktPmZyYW1lKCkpCi0gICAgICAgIGltcGwoKS0+c2V0T25FcnJvckxpc3RlbmVyKHRvSlNET01X
aW5kb3coZnJhbWUpLT5maW5kT3JDcmVhdGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihleGVj
LCB2YWx1ZSwgdHJ1ZSkpOworICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+YXNzb2NpYXRlZEZy
YW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIGltcGwoKS0+c2V0
T25lcnJvcih0b0pTRE9NV2luZG93KGZyYW1lKS0+ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3RlZEV2
ZW50TGlzdGVuZXIoZXhlYywgdmFsdWUsIHRydWUpKTsKIH0KIAogSlNWYWx1ZSogSlNET01BcHBs
aWNhdGlvbkNhY2hlOjpvbmVycm9yKEV4ZWNTdGF0ZSopIGNvbnN0CiB7Ci0gICAgaWYgKEpTVW5w
cm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0
ZWRFdmVudExpc3RlbmVyKj4oaW1wbCgpLT5vbkVycm9yTGlzdGVuZXIoKSkpCisgICAgaWYgKEpT
VW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90
ZWN0ZWRFdmVudExpc3RlbmVyKj4oaW1wbCgpLT5vbmVycm9yKCkpKQogICAgICAgICBpZiAoSlNP
YmplY3QqIGxpc3RlbmVyT2JqID0gbGlzdGVuZXItPmxpc3RlbmVyT2JqKCkpCiAgICAgICAgICAg
ICByZXR1cm4gbGlzdGVuZXJPYmo7CiAgICAgcmV0dXJuIGpzTnVsbCgpOwpAQCAtMTMyLDEzICsx
NjMsMTUgQEAgSlNWYWx1ZSogSlNET01BcHBsaWNhdGlvbkNhY2hlOjpvbmVycm9yKAogCiB2b2lk
IEpTRE9NQXBwbGljYXRpb25DYWNoZTo6c2V0T25ub3VwZGF0ZShFeGVjU3RhdGUqIGV4ZWMsIEpT
VmFsdWUqIHZhbHVlKQogewotICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBsKCktPmZyYW1lKCkp
Ci0gICAgICAgIGltcGwoKS0+c2V0T25Ob1VwZGF0ZUxpc3RlbmVyKHRvSlNET01XaW5kb3coZnJh
bWUpLT5maW5kT3JDcmVhdGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihleGVjLCB2YWx1ZSwg
dHJ1ZSkpOworICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+YXNzb2NpYXRlZEZyYW1lKCk7Cisg
ICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIGltcGwoKS0+c2V0T25ub3VwZGF0
ZSh0b0pTRE9NV2luZG93KGZyYW1lKS0+ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3RlZEV2ZW50TGlz
dGVuZXIoZXhlYywgdmFsdWUsIHRydWUpKTsKIH0KIAogSlNWYWx1ZSogSlNET01BcHBsaWNhdGlv
bkNhY2hlOjpvbm5vdXBkYXRlKEV4ZWNTdGF0ZSopIGNvbnN0CiB7Ci0gICAgaWYgKEpTVW5wcm90
ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRF
dmVudExpc3RlbmVyKj4oaW1wbCgpLT5vbk5vVXBkYXRlTGlzdGVuZXIoKSkpCisgICAgaWYgKEpT
VW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90
ZWN0ZWRFdmVudExpc3RlbmVyKj4oaW1wbCgpLT5vbm5vdXBkYXRlKCkpKQogICAgICAgICBpZiAo
SlNPYmplY3QqIGxpc3RlbmVyT2JqID0gbGlzdGVuZXItPmxpc3RlbmVyT2JqKCkpCiAgICAgICAg
ICAgICByZXR1cm4gbGlzdGVuZXJPYmo7CiAgICAgcmV0dXJuIGpzTnVsbCgpOwpAQCAtMTQ2LDEz
ICsxNzksMTUgQEAgSlNWYWx1ZSogSlNET01BcHBsaWNhdGlvbkNhY2hlOjpvbm5vdXBkYQogCiB2
b2lkIEpTRE9NQXBwbGljYXRpb25DYWNoZTo6c2V0T25kb3dubG9hZGluZyhFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUqIHZhbHVlKQogewotICAgIGlmIChGcmFtZSogZnJhbWUgPSBpbXBsKCktPmZy
YW1lKCkpCi0gICAgICAgIGltcGwoKS0+c2V0T25Eb3dubG9hZGluZ0xpc3RlbmVyKHRvSlNET01X
aW5kb3coZnJhbWUpLT5maW5kT3JDcmVhdGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihleGVj
LCB2YWx1ZSwgdHJ1ZSkpOworICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+YXNzb2NpYXRlZEZy
YW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIGltcGwoKS0+c2V0
T25kb3dubG9hZGluZyh0b0pTRE9NV2luZG93KGZyYW1lKS0+ZmluZE9yQ3JlYXRlSlNVbnByb3Rl
Y3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgdmFsdWUsIHRydWUpKTsKIH0KIAogSlNWYWx1ZSogSlNE
T01BcHBsaWNhdGlvbkNhY2hlOjpvbmRvd25sb2FkaW5nKEV4ZWNTdGF0ZSopIGNvbnN0CiB7Ci0g
ICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0
PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4oaW1wbCgpLT5vbkRvd25sb2FkaW5nTGlzdGVu
ZXIoKSkpCisgICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0
YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4oaW1wbCgpLT5vbmRvd25sb2Fk
aW5nKCkpKQogICAgICAgICBpZiAoSlNPYmplY3QqIGxpc3RlbmVyT2JqID0gbGlzdGVuZXItPmxp
c3RlbmVyT2JqKCkpCiAgICAgICAgICAgICByZXR1cm4gbGlzdGVuZXJPYmo7CiAgICAgcmV0dXJu
IGpzTnVsbCgpOwpAQCAtMTYwLDEzICsxOTUsMTUgQEAgSlNWYWx1ZSogSlNET01BcHBsaWNhdGlv
bkNhY2hlOjpvbmRvd25sbwogCiB2b2lkIEpTRE9NQXBwbGljYXRpb25DYWNoZTo6c2V0T25wcm9n
cmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUqIHZhbHVlKQogewotICAgIGlmIChGcmFtZSog
ZnJhbWUgPSBpbXBsKCktPmZyYW1lKCkpCi0gICAgICAgIGltcGwoKS0+c2V0T25Qcm9ncmVzc0xp
c3RlbmVyKHRvSlNET01XaW5kb3coZnJhbWUpLT5maW5kT3JDcmVhdGVKU1VucHJvdGVjdGVkRXZl
bnRMaXN0ZW5lcihleGVjLCB2YWx1ZSwgdHJ1ZSkpOworICAgIEZyYW1lKiBmcmFtZSA9IGltcGwo
KS0+YXNzb2NpYXRlZEZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOwor
ICAgIGltcGwoKS0+c2V0T25wcm9ncmVzcyh0b0pTRE9NV2luZG93KGZyYW1lKS0+ZmluZE9yQ3Jl
YXRlSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgdmFsdWUsIHRydWUpKTsKIH0KIAog
SlNWYWx1ZSogSlNET01BcHBsaWNhdGlvbkNhY2hlOjpvbnByb2dyZXNzKEV4ZWNTdGF0ZSopIGNv
bnN0CiB7Ci0gICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0
YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4oaW1wbCgpLT5vblByb2dyZXNz
TGlzdGVuZXIoKSkpCisgICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5l
ciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4oaW1wbCgpLT5vbnBy
b2dyZXNzKCkpKQogICAgICAgICBpZiAoSlNPYmplY3QqIGxpc3RlbmVyT2JqID0gbGlzdGVuZXIt
Pmxpc3RlbmVyT2JqKCkpCiAgICAgICAgICAgICByZXR1cm4gbGlzdGVuZXJPYmo7CiAgICAgcmV0
dXJuIGpzTnVsbCgpOwpAQCAtMTc0LDEzICsyMTEsMTUgQEAgSlNWYWx1ZSogSlNET01BcHBsaWNh
dGlvbkNhY2hlOjpvbnByb2dyZQogCiB2b2lkIEpTRE9NQXBwbGljYXRpb25DYWNoZTo6c2V0T251
cGRhdGVyZWFkeShFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUqIHZhbHVlKQogewotICAgIGlmIChG
cmFtZSogZnJhbWUgPSBpbXBsKCktPmZyYW1lKCkpCi0gICAgICAgIGltcGwoKS0+c2V0T25VcGRh
dGVSZWFkeUxpc3RlbmVyKHRvSlNET01XaW5kb3coZnJhbWUpLT5maW5kT3JDcmVhdGVKU1VucHJv
dGVjdGVkRXZlbnRMaXN0ZW5lcihleGVjLCB2YWx1ZSwgdHJ1ZSkpOworICAgIEZyYW1lKiBmcmFt
ZSA9IGltcGwoKS0+YXNzb2NpYXRlZEZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAg
cmV0dXJuOworICAgIGltcGwoKS0+c2V0T251cGRhdGVyZWFkeSh0b0pTRE9NV2luZG93KGZyYW1l
KS0+ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgdmFsdWUsIHRy
dWUpKTsKIH0KIAogSlNWYWx1ZSogSlNET01BcHBsaWNhdGlvbkNhY2hlOjpvbnVwZGF0ZXJlYWR5
KEV4ZWNTdGF0ZSopIGNvbnN0CiB7Ci0gICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVy
KiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4oaW1w
bCgpLT5vblVwZGF0ZVJlYWR5TGlzdGVuZXIoKSkpCisgICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVu
dExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3Rl
bmVyKj4oaW1wbCgpLT5vbnVwZGF0ZXJlYWR5KCkpKQogICAgICAgICBpZiAoSlNPYmplY3QqIGxp
c3RlbmVyT2JqID0gbGlzdGVuZXItPmxpc3RlbmVyT2JqKCkpCiAgICAgICAgICAgICByZXR1cm4g
bGlzdGVuZXJPYmo7CiAgICAgcmV0dXJuIGpzTnVsbCgpOwpAQCAtMTg4LDU0ICsyMjcsMjAgQEAg
SlNWYWx1ZSogSlNET01BcHBsaWNhdGlvbkNhY2hlOjpvbnVwZGF0ZQogCiB2b2lkIEpTRE9NQXBw
bGljYXRpb25DYWNoZTo6c2V0T25jYWNoZWQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlKiB2YWx1
ZSkKIHsKLSAgICBpZiAoRnJhbWUqIGZyYW1lID0gaW1wbCgpLT5mcmFtZSgpKQotICAgICAgICBp
bXBsKCktPnNldE9uQ2FjaGVkTGlzdGVuZXIodG9KU0RPTVdpbmRvdyhmcmFtZSktPmZpbmRPckNy
ZWF0ZUpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKGV4ZWMsIHZhbHVlLCB0cnVlKSk7CisgICAg
RnJhbWUqIGZyYW1lID0gaW1wbCgpLT5hc3NvY2lhdGVkRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1l
KQorICAgICAgICByZXR1cm47CisgICAgaW1wbCgpLT5zZXRPbmNhY2hlZCh0b0pTRE9NV2luZG93
KGZyYW1lKS0+ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgdmFs
dWUsIHRydWUpKTsKIH0KIAogSlNWYWx1ZSogSlNET01BcHBsaWNhdGlvbkNhY2hlOjpvbmNhY2hl
ZChFeGVjU3RhdGUqKSBjb25zdAogewotICAgIGlmIChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5l
ciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+KGlt
cGwoKS0+b25DYWNoZWRMaXN0ZW5lcigpKSkKKyAgICBpZiAoSlNVbnByb3RlY3RlZEV2ZW50TGlz
dGVuZXIqIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIq
PihpbXBsKCktPm9uY2FjaGVkKCkpKQogICAgICAgICBpZiAoSlNPYmplY3QqIGxpc3RlbmVyT2Jq
ID0gbGlzdGVuZXItPmxpc3RlbmVyT2JqKCkpCiAgICAgICAgICAgICByZXR1cm4gbGlzdGVuZXJP
Ymo7CiAgICAgcmV0dXJuIGpzTnVsbCgpOwogfQogCi12b2lkIEpTRE9NQXBwbGljYXRpb25DYWNo
ZTo6bWFyaygpCi17Ci0gICAgRE9NT2JqZWN0OjptYXJrKCk7Ci0gCi0gICAgaWYgKEpTVW5wcm90
ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRF
dmVudExpc3RlbmVyKj4obV9pbXBsLT5vbkNoZWNraW5nTGlzdGVuZXIoKSkpCi0gICAgICAgIGxp
c3RlbmVyLT5tYXJrKCk7Ci0gICAgICAgIAotICAgIGlmIChKU1VucHJvdGVjdGVkRXZlbnRMaXN0
ZW5lciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+
KG1faW1wbC0+b25FcnJvckxpc3RlbmVyKCkpKQotICAgICAgICBsaXN0ZW5lci0+bWFyaygpOwot
Ci0gICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19j
YXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4obV9pbXBsLT5vbk5vVXBkYXRlTGlzdGVu
ZXIoKSkpCi0gICAgICAgIGxpc3RlbmVyLT5tYXJrKCk7Ci0KLSAgICBpZiAoSlNVbnByb3RlY3Rl
ZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50
TGlzdGVuZXIqPihtX2ltcGwtPm9uRG93bmxvYWRpbmdMaXN0ZW5lcigpKSkKLSAgICAgICAgbGlz
dGVuZXItPm1hcmsoKTsKLQotICAgIGlmIChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogbGlz
dGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+KG1faW1wbC0+
b25Qcm9ncmVzc0xpc3RlbmVyKCkpKQotICAgICAgICBsaXN0ZW5lci0+bWFyaygpOwotCi0gICAg
aWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpT
VW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4obV9pbXBsLT5vblVwZGF0ZVJlYWR5TGlzdGVuZXIo
KSkpCi0gICAgICAgIGxpc3RlbmVyLT5tYXJrKCk7Ci0KLSAgICBpZiAoSlNVbnByb3RlY3RlZEV2
ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlz
dGVuZXIqPihtX2ltcGwtPm9uQ2FjaGVkTGlzdGVuZXIoKSkpCi0gICAgICAgIGxpc3RlbmVyLT5t
YXJrKCk7Ci0gICAgCi0gICAgdHlwZWRlZiBET01BcHBsaWNhdGlvbkNhY2hlOjpFdmVudExpc3Rl
bmVyc01hcCBFdmVudExpc3RlbmVyc01hcDsKLSAgICB0eXBlZGVmIERPTUFwcGxpY2F0aW9uQ2Fj
aGU6Okxpc3RlbmVyVmVjdG9yIExpc3RlbmVyVmVjdG9yOwotICAgIEV2ZW50TGlzdGVuZXJzTWFw
JiBldmVudExpc3RlbmVycyA9IG1faW1wbC0+ZXZlbnRMaXN0ZW5lcnMoKTsKLSAgICBmb3IgKEV2
ZW50TGlzdGVuZXJzTWFwOjppdGVyYXRvciBtYXBJdGVyID0gZXZlbnRMaXN0ZW5lcnMuYmVnaW4o
KTsgbWFwSXRlciAhPSBldmVudExpc3RlbmVycy5lbmQoKTsgKyttYXBJdGVyKSB7Ci0gICAgICAg
IGZvciAoTGlzdGVuZXJWZWN0b3I6Oml0ZXJhdG9yIHZlY0l0ZXIgPSBtYXBJdGVyLT5zZWNvbmQu
YmVnaW4oKTsgdmVjSXRlciAhPSBtYXBJdGVyLT5zZWNvbmQuZW5kKCk7ICsrdmVjSXRlcikgewot
ICAgICAgICAgICAgSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gc3RhdGlj
X2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqPih2ZWNJdGVyLT5nZXQoKSk7Ci0gICAg
ICAgICAgICBsaXN0ZW5lci0+bWFyaygpOwotICAgICAgICB9Ci0gICAgfQotfQotCiB9IC8vIG5h
bWVzcGFjZSBXZWJDb3JlCiAKICNlbmRpZiAvLyBFTkFCTEUoT0ZGTElORV9XRUJfQVBQTElDQVRJ
T05TKQpJbmRleDogYmluZGluZ3MvanMvSlNFdmVudFRhcmdldE5vZGVDdXN0b20uY3BwCj09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT0KLS0tIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXROb2RlQ3VzdG9tLmNwcAkocmV2aXNp
b24gMzcxMjEpCisrKyBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Tm9kZUN1c3RvbS5jcHAJKHdv
cmtpbmcgY29weSkKQEAgLTQyLDcgKzQyLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogCiBKU1Zh
bHVlKiBKU0V2ZW50VGFyZ2V0Tm9kZTo6YWRkRXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUqIGV4ZWMs
IGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0gaW1wbCgpLT5kb2N1
bWVudCgpLT5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+YXNzb2NpYXRlZEZy
YW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAK
QEAgLTU0LDcgKzU0LDcgQEAgSlNWYWx1ZSogSlNFdmVudFRhcmdldE5vZGU6OmFkZEV2ZW50TGlz
dAogCiBKU1ZhbHVlKiBKU0V2ZW50VGFyZ2V0Tm9kZTo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihFeGVj
U3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7Ci0gICAgRnJhbWUqIGZyYW1lID0g
aW1wbCgpLT5kb2N1bWVudCgpLT5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+
YXNzb2NpYXRlZEZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGpzVW5k
ZWZpbmVkKCk7CiAKQEAgLTY0LDE3ICs2NCw5IEBAIEpTVmFsdWUqIEpTRXZlbnRUYXJnZXROb2Rl
OjpyZW1vdmVFdmVudEwKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAotSlNWYWx1ZSog
SlNFdmVudFRhcmdldE5vZGU6OmRpc3BhdGNoRXZlbnQoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBB
cmdMaXN0JiBhcmdzKQotewotICAgIEV4Y2VwdGlvbkNvZGUgZWMgPSAwOwotICAgIEpTVmFsdWUq
IHJlc3VsdCA9IGpzQm9vbGVhbihpbXBsKCktPmRpc3BhdGNoRXZlbnQodG9FdmVudChhcmdzLmF0
KGV4ZWMsIDApKSwgZWMpKTsKLSAgICBzZXRET01FeGNlcHRpb24oZXhlYywgZWMpOwotICAgIHJl
dHVybiByZXN1bHQ7Ci19Ci0KIEpTVmFsdWUqIEpTRXZlbnRUYXJnZXROb2RlOjpnZXRMaXN0ZW5l
cihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdAog
ewotICAgIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gRXZlbnRUYXJnZXROb2RlQ2FzdChpbXBs
KCkpLT5ldmVudExpc3RlbmVyRm9yVHlwZShldmVudFR5cGUpOworICAgIEV2ZW50TGlzdGVuZXIq
IGxpc3RlbmVyID0gaW1wbCgpLT5ldmVudExpc3RlbmVyRm9yVHlwZShldmVudFR5cGUpOwogICAg
IEpTRXZlbnRMaXN0ZW5lcioganNMaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTRXZlbnRMaXN0ZW5l
cio+KGxpc3RlbmVyKTsKICAgICBpZiAoanNMaXN0ZW5lciAmJiBqc0xpc3RlbmVyLT5saXN0ZW5l
ck9iaigpKQogICAgICAgICByZXR1cm4ganNMaXN0ZW5lci0+bGlzdGVuZXJPYmooKTsKQEAgLTg0
LDkgKzc2LDEwIEBAIEpTVmFsdWUqIEpTRXZlbnRUYXJnZXROb2RlOjpnZXRMaXN0ZW5lcigKIAog
dm9pZCBKU0V2ZW50VGFyZ2V0Tm9kZTo6c2V0TGlzdGVuZXIoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgSlNWYWx1ZSogZnVuYykKIHsKLSAgICBGcmFtZSog
ZnJhbWUgPSBpbXBsKCktPmRvY3VtZW50KCktPmZyYW1lKCk7Ci0gICAgaWYgKGZyYW1lKQotICAg
ICAgICBFdmVudFRhcmdldE5vZGVDYXN0KGltcGwoKSktPnNldEV2ZW50TGlzdGVuZXJGb3JUeXBl
KGV2ZW50VHlwZSwgdG9KU0RPTVdpbmRvdyhmcmFtZSktPmZpbmRPckNyZWF0ZUpTRXZlbnRMaXN0
ZW5lcihleGVjLCBmdW5jLCB0cnVlKSk7CisgICAgRnJhbWUqIGZyYW1lID0gaW1wbCgpLT5hc3Nv
Y2lhdGVkRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgaW1w
bCgpLT5zZXRFdmVudExpc3RlbmVyRm9yVHlwZShldmVudFR5cGUsIHRvSlNET01XaW5kb3coZnJh
bWUpLT5maW5kT3JDcmVhdGVKU0V2ZW50TGlzdGVuZXIoZXhlYywgZnVuYywgdHJ1ZSkpOwogfQog
CiB2b2lkIEpTRXZlbnRUYXJnZXROb2RlOjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUoRXhlY1N0YXRl
KiwgU2NvcGVDaGFpbiYpIGNvbnN0CkluZGV4OiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3Vz
dG9tLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNw
cAkocmV2aXNpb24gMzcxMjEpCisrKyBiaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtMzcsNyArMzcsMzQgQEAKIHVzaW5nIG5hbWVzcGFjZSBKU0M7
CiAKIG5hbWVzcGFjZSBXZWJDb3JlIHsKLSAgICAKKwordm9pZCBKU01lc3NhZ2VQb3J0OjptYXJr
KCkKK3sKKyAgICBET01PYmplY3Q6Om1hcmsoKTsKKworICAgIGlmIChKU1VucHJvdGVjdGVkRXZl
bnRMaXN0ZW5lciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0
ZW5lcio+KG1faW1wbC0+b25tZXNzYWdlKCkpKQorICAgICAgICBsaXN0ZW5lci0+bWFyaygpOwor
CisgICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19j
YXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4obV9pbXBsLT5vbmNsb3NlKCkpKQorICAg
ICAgICBsaXN0ZW5lci0+bWFyaygpOworCisgICAgaWYgKE1lc3NhZ2VQb3J0KiBlbnRhbmdsZWRQ
b3J0ID0gbV9pbXBsLT5lbnRhbmdsZWRQb3J0KCkpIHsKKyAgICAgICAgRE9NT2JqZWN0KiB3cmFw
cGVyID0gZ2V0Q2FjaGVkRE9NT2JqZWN0V3JhcHBlcihlbnRhbmdsZWRQb3J0KTsKKyAgICAgICAg
aWYgKHdyYXBwZXIgJiYgIXdyYXBwZXItPm1hcmtlZCgpKQorICAgICAgICAgICAgd3JhcHBlci0+
bWFyaygpOworICAgIH0KKworICAgIHR5cGVkZWYgTWVzc2FnZVBvcnQ6OkV2ZW50TGlzdGVuZXJz
TWFwIEV2ZW50TGlzdGVuZXJzTWFwOworICAgIHR5cGVkZWYgTWVzc2FnZVBvcnQ6Okxpc3RlbmVy
VmVjdG9yIExpc3RlbmVyVmVjdG9yOworICAgIEV2ZW50TGlzdGVuZXJzTWFwJiBldmVudExpc3Rl
bmVycyA9IG1faW1wbC0+ZXZlbnRMaXN0ZW5lcnMoKTsKKyAgICBmb3IgKEV2ZW50TGlzdGVuZXJz
TWFwOjppdGVyYXRvciBtYXBJdGVyID0gZXZlbnRMaXN0ZW5lcnMuYmVnaW4oKTsgbWFwSXRlciAh
PSBldmVudExpc3RlbmVycy5lbmQoKTsgKyttYXBJdGVyKSB7CisgICAgICAgIGZvciAoTGlzdGVu
ZXJWZWN0b3I6Oml0ZXJhdG9yIHZlY0l0ZXIgPSBtYXBJdGVyLT5zZWNvbmQuYmVnaW4oKTsgdmVj
SXRlciAhPSBtYXBJdGVyLT5zZWNvbmQuZW5kKCk7ICsrdmVjSXRlcikgeworICAgICAgICAgICAg
SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNVbnBy
b3RlY3RlZEV2ZW50TGlzdGVuZXIqPih2ZWNJdGVyLT5nZXQoKSk7CisgICAgICAgICAgICBsaXN0
ZW5lci0+bWFyaygpOworICAgICAgICB9CisgICAgfQorfQorCiBKU1ZhbHVlKiBKU01lc3NhZ2VQ
b3J0OjpzdGFydENvbnZlcnNhdGlvbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFy
Z3MpCiB7CiAgICAgRE9NV2luZG93KiB3aW5kb3cgPSBhc0pTRE9NV2luZG93KGV4ZWMtPmxleGlj
YWxHbG9iYWxPYmplY3QoKSktPmltcGwoKTsKQEAgLTQ4LDEzICs3NSwxMCBAQCBKU1ZhbHVlKiBK
U01lc3NhZ2VQb3J0OjpzdGFydENvbnZlcnNhdGlvCiAKIEpTVmFsdWUqIEpTTWVzc2FnZVBvcnQ6
OmFkZEV2ZW50TGlzdGVuZXIoRXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQog
ewotICAgIERvY3VtZW50KiBkb2N1bWVudCA9IGltcGwoKS0+ZG9jdW1lbnQoKTsKLSAgICBpZiAo
IWRvY3VtZW50KQorICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+YXNzb2NpYXRlZEZyYW1lKCk7
CisgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7Ci0gICAgSlNE
T01XaW5kb3cqIHdpbmRvdyA9IHRvSlNET01XaW5kb3coZG9jdW1lbnQtPmZyYW1lKCkpOwotICAg
IGlmICghd2luZG93KQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBSZWZQdHI8
SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gd2luZG93LT5maW5kT3JDcmVh
dGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihleGVjLCBhcmdzLmF0KGV4ZWMsIDEpKTsKKyAg
ICBSZWZQdHI8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyID0gdG9KU0RPTVdp
bmRvdyhmcmFtZSktPmZpbmRPckNyZWF0ZUpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKGV4ZWMs
IGFyZ3MuYXQoZXhlYywgMSkpOwogICAgIGlmICghbGlzdGVuZXIpCiAgICAgICAgIHJldHVybiBq
c1VuZGVmaW5lZCgpOwogICAgIGltcGwoKS0+YWRkRXZlbnRMaXN0ZW5lcihhcmdzLmF0KGV4ZWMs
IDApLT50b1N0cmluZyhleGVjKSwgbGlzdGVuZXIucmVsZWFzZSgpLCBhcmdzLmF0KGV4ZWMsIDIp
LT50b0Jvb2xlYW4oZXhlYykpOwpAQCAtNjMsNDMgKzg3LDI4IEBAIEpTVmFsdWUqIEpTTWVzc2Fn
ZVBvcnQ6OmFkZEV2ZW50TGlzdGVuZXIKIAogSlNWYWx1ZSogSlNNZXNzYWdlUG9ydDo6cmVtb3Zl
RXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7Ci0g
ICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gaW1wbCgpLT5kb2N1bWVudCgpOwotICAgIGlmICghZG9j
dW1lbnQpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIEpTRE9NV2luZG93KiB3
aW5kb3cgPSB0b0pTRE9NV2luZG93KGRvY3VtZW50LT5mcmFtZSgpKTsKLSAgICBpZiAoIXdpbmRv
dykKKyAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCktPmFzc29jaWF0ZWRGcmFtZSgpOworICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIEpTVW5wcm90ZWN0
ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHdpbmRvdy0+ZmluZEpTVW5wcm90ZWN0ZWRFdmVu
dExpc3RlbmVyKGV4ZWMsIGFyZ3MuYXQoZXhlYywgMSkpOworICAgIEpTVW5wcm90ZWN0ZWRFdmVu
dExpc3RlbmVyKiBsaXN0ZW5lciA9IHRvSlNET01XaW5kb3coZnJhbWUpLT5maW5kSlNVbnByb3Rl
Y3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgYXJncy5hdChleGVjLCAxKSk7CiAgICAgaWYgKCFsaXN0
ZW5lcikKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7CiAgICAgaW1wbCgpLT5yZW1vdmVF
dmVudExpc3RlbmVyKGFyZ3MuYXQoZXhlYywgMCktPnRvU3RyaW5nKGV4ZWMpLCBsaXN0ZW5lciwg
YXJncy5hdChleGVjLCAyKS0+dG9Cb29sZWFuKGV4ZWMpKTsKICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKICAgICAKIH0KLSAgICAKLUpTVmFsdWUqIEpTTWVzc2FnZVBvcnQ6OmRpc3BhdGNoRXZl
bnQoSlNDOjpFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCi17Ci0gICAgRXhj
ZXB0aW9uQ29kZSBlYyA9IDA7Ci0gICAgCi0gICAgYm9vbCByZXN1bHQgPSBpbXBsKCktPmRpc3Bh
dGNoRXZlbnQodG9FdmVudChhcmdzLmF0KGV4ZWMsIDApKSwgZWMpOwotICAgIHNldERPTUV4Y2Vw
dGlvbihleGVjLCBlYyk7Ci0gICAgcmV0dXJuIGpzQm9vbGVhbihyZXN1bHQpOyAgICAKLX0KIAog
dm9pZCBKU01lc3NhZ2VQb3J0OjpzZXRPbm1lc3NhZ2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
KiB2YWx1ZSkKIHsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSBpbXBsKCktPmRvY3VtZW50KCk7
Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIEpTRE9NV2luZG93KiB3
aW5kb3cgPSB0b0pTRE9NV2luZG93KGRvY3VtZW50LT5mcmFtZSgpKTsKLSAgICBpZiAoIXdpbmRv
dykKKyAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCktPmFzc29jaWF0ZWRGcmFtZSgpOworICAgIGlm
ICghZnJhbWUpCiAgICAgICAgIHJldHVybjsKLSAgICBpbXBsKCktPnNldE9uTWVzc2FnZUxpc3Rl
bmVyKHdpbmRvdy0+ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywg
dmFsdWUpKTsKKyAgICBpbXBsKCktPnNldE9ubWVzc2FnZSh0b0pTRE9NV2luZG93KGZyYW1lKS0+
ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgdmFsdWUpKTsKIH0K
IAogSlNWYWx1ZSogSlNNZXNzYWdlUG9ydDo6b25tZXNzYWdlKEV4ZWNTdGF0ZSopIGNvbnN0CiB7
Ci0gICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19j
YXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4oaW1wbCgpLT5vbk1lc3NhZ2VMaXN0ZW5l
cigpKSkKKyAgICBpZiAoSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gc3Rh
dGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqPihpbXBsKCktPm9ubWVzc2FnZSgp
KSkKICAgICAgICAgaWYgKEpTT2JqZWN0KiBsaXN0ZW5lck9iaiA9IGxpc3RlbmVyLT5saXN0ZW5l
ck9iaigpKQogICAgICAgICAgICAgcmV0dXJuIGxpc3RlbmVyT2JqOwogICAgIHJldHVybiBqc051
bGwoKTsKQEAgLTEwNyw0OCArMTE2LDE4IEBAIEpTVmFsdWUqIEpTTWVzc2FnZVBvcnQ6Om9ubWVz
c2FnZShFeGVjU3QKIAogdm9pZCBKU01lc3NhZ2VQb3J0OjpzZXRPbmNsb3NlKEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSogdmFsdWUpCiB7Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gaW1wbCgp
LT5kb2N1bWVudCgpOwotICAgIGlmICghZG9jdW1lbnQpCisgICAgRnJhbWUqIGZyYW1lID0gaW1w
bCgpLT5hc3NvY2lhdGVkRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQogICAgICAgICByZXR1cm47
Ci0gICAgSlNET01XaW5kb3cqIHdpbmRvdyA9IHRvSlNET01XaW5kb3coZG9jdW1lbnQtPmZyYW1l
KCkpOwotICAgIGlmICghd2luZG93KQotICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLT5zZXRP
bkNsb3NlTGlzdGVuZXIod2luZG93LT5maW5kT3JDcmVhdGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0
ZW5lcihleGVjLCB2YWx1ZSkpOworICAgIGltcGwoKS0+c2V0T25jbG9zZSh0b0pTRE9NV2luZG93
KGZyYW1lKS0+ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgdmFs
dWUpKTsKIH0KIAogSlNWYWx1ZSogSlNNZXNzYWdlUG9ydDo6b25jbG9zZShFeGVjU3RhdGUqKSBj
b25zdAogewotICAgIGlmIChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBz
dGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+KGltcGwoKS0+b25DbG9zZUxp
c3RlbmVyKCkpKQorICAgIGlmIChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIg
PSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+KGltcGwoKS0+b25jbG9z
ZSgpKSkKICAgICAgICAgaWYgKEpTT2JqZWN0KiBsaXN0ZW5lck9iaiA9IGxpc3RlbmVyLT5saXN0
ZW5lck9iaigpKQogICAgICAgICAgICAgcmV0dXJuIGxpc3RlbmVyT2JqOwogICAgIHJldHVybiBq
c051bGwoKTsKIH0KIAotdm9pZCBKU01lc3NhZ2VQb3J0OjptYXJrKCkKLXsKLSAgICBET01PYmpl
Y3Q6Om1hcmsoKTsKLSAKLSAgICBpZiAoSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIGxpc3Rl
bmVyID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqPihtX2ltcGwtPm9u
TWVzc2FnZUxpc3RlbmVyKCkpKQotICAgICAgICBsaXN0ZW5lci0+bWFyaygpOwotCi0gICAgaWYg
KEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5w
cm90ZWN0ZWRFdmVudExpc3RlbmVyKj4obV9pbXBsLT5vbkNsb3NlTGlzdGVuZXIoKSkpCi0gICAg
ICAgIGxpc3RlbmVyLT5tYXJrKCk7Ci0KLSAgICBpZiAoTWVzc2FnZVBvcnQqIGVudGFuZ2xlZFBv
cnQgPSBtX2ltcGwtPmVudGFuZ2xlZFBvcnQoKSkgewotICAgICAgICBET01PYmplY3QqIHdyYXBw
ZXIgPSBnZXRDYWNoZWRET01PYmplY3RXcmFwcGVyKGVudGFuZ2xlZFBvcnQpOwotICAgICAgICBp
ZiAod3JhcHBlciAmJiAhd3JhcHBlci0+bWFya2VkKCkpCi0gICAgICAgICAgICB3cmFwcGVyLT5t
YXJrKCk7Ci0gICAgfQotCi0gICAgdHlwZWRlZiBNZXNzYWdlUG9ydDo6RXZlbnRMaXN0ZW5lcnNN
YXAgRXZlbnRMaXN0ZW5lcnNNYXA7Ci0gICAgdHlwZWRlZiBNZXNzYWdlUG9ydDo6TGlzdGVuZXJW
ZWN0b3IgTGlzdGVuZXJWZWN0b3I7Ci0gICAgRXZlbnRMaXN0ZW5lcnNNYXAmIGV2ZW50TGlzdGVu
ZXJzID0gbV9pbXBsLT5ldmVudExpc3RlbmVycygpOwotICAgIGZvciAoRXZlbnRMaXN0ZW5lcnNN
YXA6Oml0ZXJhdG9yIG1hcEl0ZXIgPSBldmVudExpc3RlbmVycy5iZWdpbigpOyBtYXBJdGVyICE9
IGV2ZW50TGlzdGVuZXJzLmVuZCgpOyArK21hcEl0ZXIpIHsKLSAgICAgICAgZm9yIChMaXN0ZW5l
clZlY3Rvcjo6aXRlcmF0b3IgdmVjSXRlciA9IG1hcEl0ZXItPnNlY29uZC5iZWdpbigpOyB2ZWNJ
dGVyICE9IG1hcEl0ZXItPnNlY29uZC5lbmQoKTsgKyt2ZWNJdGVyKSB7Ci0gICAgICAgICAgICBK
U1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJv
dGVjdGVkRXZlbnRMaXN0ZW5lcio+KHZlY0l0ZXItPmdldCgpKTsKLSAgICAgICAgICAgIGxpc3Rl
bmVyLT5tYXJrKCk7Ci0gICAgICAgIH0KLSAgICB9Ci19Ci0KIH0gLy8gbmFtZXNwYWNlIFdlYkNv
cmUKSW5kZXg6IGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCj09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT0KLS0tIGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCShyZXZpc2lvbiAz
NzEyMSkKKysrIGJpbmRpbmdzL2pzL0pTWE1MSHR0cFJlcXVlc3RDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC01OSwyMiArNTksMjIgQEAgdm9pZCBKU1hNTEh0dHBSZXF1ZXN0OjptYXJrKCkK
ICAgICAgICAgICAgIHdyYXBwZXItPm1hcmsoKTsKICAgICB9CiAKLSAgICBpZiAoSlNVbnByb3Rl
Y3RlZEV2ZW50TGlzdGVuZXIqIG9uUmVhZHlTdGF0ZUNoYW5nZUxpc3RlbmVyID0gc3RhdGljX2Nh
c3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqPihtX2ltcGwtPm9uUmVhZHlTdGF0ZUNoYW5n
ZUxpc3RlbmVyKCkpKQorICAgIGlmIChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogb25SZWFk
eVN0YXRlQ2hhbmdlTGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0
ZW5lcio+KG1faW1wbC0+b25yZWFkeXN0YXRlY2hhbmdlKCkpKQogICAgICAgICBvblJlYWR5U3Rh
dGVDaGFuZ2VMaXN0ZW5lci0+bWFyaygpOwogCi0gICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExp
c3RlbmVyKiBvbkFib3J0TGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRM
aXN0ZW5lcio+KG1faW1wbC0+b25BYm9ydExpc3RlbmVyKCkpKQorICAgIGlmIChKU1VucHJvdGVj
dGVkRXZlbnRMaXN0ZW5lciogb25BYm9ydExpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNVbnByb3Rl
Y3RlZEV2ZW50TGlzdGVuZXIqPihtX2ltcGwtPm9uYWJvcnQoKSkpCiAgICAgICAgIG9uQWJvcnRM
aXN0ZW5lci0+bWFyaygpOwogCi0gICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBv
bkVycm9yTGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+
KG1faW1wbC0+b25FcnJvckxpc3RlbmVyKCkpKQorICAgIGlmIChKU1VucHJvdGVjdGVkRXZlbnRM
aXN0ZW5lciogb25FcnJvckxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50
TGlzdGVuZXIqPihtX2ltcGwtPm9uZXJyb3IoKSkpCiAgICAgICAgIG9uRXJyb3JMaXN0ZW5lci0+
bWFyaygpOwogCi0gICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBvbkxvYWRMaXN0
ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4obV9pbXBsLT5v
bkxvYWRMaXN0ZW5lcigpKSkKKyAgICBpZiAoSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIG9u
TG9hZExpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqPiht
X2ltcGwtPm9ubG9hZCgpKSkKICAgICAgICAgb25Mb2FkTGlzdGVuZXItPm1hcmsoKTsKIAotICAg
IGlmIChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogb25Mb2FkU3RhcnRMaXN0ZW5lciA9IHN0
YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4obV9pbXBsLT5vbkxvYWRTdGFy
dExpc3RlbmVyKCkpKQorICAgIGlmIChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogb25Mb2Fk
U3RhcnRMaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4o
bV9pbXBsLT5vbmxvYWRzdGFydCgpKSkKICAgICAgICAgb25Mb2FkU3RhcnRMaXN0ZW5lci0+bWFy
aygpOwogICAgIAotICAgIGlmIChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogb25Qcm9ncmVz
c0xpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqPihtX2lt
cGwtPm9uUHJvZ3Jlc3NMaXN0ZW5lcigpKSkKKyAgICBpZiAoSlNVbnByb3RlY3RlZEV2ZW50TGlz
dGVuZXIqIG9uUHJvZ3Jlc3NMaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVu
dExpc3RlbmVyKj4obV9pbXBsLT5vbnByb2dyZXNzKCkpKQogICAgICAgICBvblByb2dyZXNzTGlz
dGVuZXItPm1hcmsoKTsKICAgICAKICAgICB0eXBlZGVmIFhNTEh0dHBSZXF1ZXN0OjpFdmVudExp
c3RlbmVyc01hcCBFdmVudExpc3RlbmVyc01hcDsKQEAgLTkwLDcgKzkwLDcgQEAgdm9pZCBKU1hN
TEh0dHBSZXF1ZXN0OjptYXJrKCkKIAogSlNWYWx1ZSogSlNYTUxIdHRwUmVxdWVzdDo6b25yZWFk
eXN0YXRlY2hhbmdlKEV4ZWNTdGF0ZSopIGNvbnN0CiB7Ci0gICAgaWYgKEpTVW5wcm90ZWN0ZWRF
dmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExp
c3RlbmVyKj4oaW1wbCgpLT5vblJlYWR5U3RhdGVDaGFuZ2VMaXN0ZW5lcigpKSkgeworICAgIGlm
IChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1Vu
cHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+KGltcGwoKS0+b25yZWFkeXN0YXRlY2hhbmdlKCkpKSB7
CiAgICAgICAgIGlmIChKU09iamVjdCogbGlzdGVuZXJPYmogPSBsaXN0ZW5lci0+bGlzdGVuZXJP
YmooKSkKICAgICAgICAgICAgIHJldHVybiBsaXN0ZW5lck9iajsKICAgICB9CkBAIC05OSwxNiAr
OTksMTYgQEAgSlNWYWx1ZSogSlNYTUxIdHRwUmVxdWVzdDo6b25yZWFkeXN0YXRlYwogCiB2b2lk
IEpTWE1MSHR0cFJlcXVlc3Q6OnNldE9ucmVhZHlzdGF0ZWNoYW5nZShFeGVjU3RhdGUqIGV4ZWMs
IEpTVmFsdWUqIHZhbHVlKQogewotICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBpbXBsKCkt
PmRvY3VtZW50KCkpIHsKLSAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFt
ZSgpKQotICAgICAgICAgICAgaW1wbCgpLT5zZXRPblJlYWR5U3RhdGVDaGFuZ2VMaXN0ZW5lcih0
b0pTRE9NV2luZG93KGZyYW1lKS0+ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVu
ZXIoZXhlYywgdmFsdWUsIHRydWUpKTsKLSAgICB9ICAgCisgICAgRnJhbWUqIGZyYW1lID0gaW1w
bCgpLT5hc3NvY2lhdGVkRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47
CisgICAgaW1wbCgpLT5zZXRPbnJlYWR5c3RhdGVjaGFuZ2UodG9KU0RPTVdpbmRvdyhmcmFtZSkt
PmZpbmRPckNyZWF0ZUpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKGV4ZWMsIHZhbHVlLCB0cnVl
KSk7CiB9CiAKIAogSlNWYWx1ZSogSlNYTUxIdHRwUmVxdWVzdDo6b25hYm9ydChFeGVjU3RhdGUq
KSBjb25zdAogewotICAgIGlmIChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIg
PSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+KGltcGwoKS0+b25BYm9y
dExpc3RlbmVyKCkpKSB7CisgICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0
ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4oaW1wbCgpLT5v
bmFib3J0KCkpKSB7CiAgICAgICAgIGlmIChKU09iamVjdCogbGlzdGVuZXJPYmogPSBsaXN0ZW5l
ci0+bGlzdGVuZXJPYmooKSkKICAgICAgICAgICAgIHJldHVybiBsaXN0ZW5lck9iajsKICAgICB9
CkBAIC0xMTcsMTUgKzExNywxNSBAQCBKU1ZhbHVlKiBKU1hNTEh0dHBSZXF1ZXN0OjpvbmFib3J0
KEV4ZWNTCiAKIHZvaWQgSlNYTUxIdHRwUmVxdWVzdDo6c2V0T25hYm9ydChFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUqIHZhbHVlKQogewotICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBpbXBs
KCktPmRvY3VtZW50KCkpIHsKLSAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5m
cmFtZSgpKQotICAgICAgICAgICAgaW1wbCgpLT5zZXRPbkFib3J0TGlzdGVuZXIodG9KU0RPTVdp
bmRvdyhmcmFtZSktPmZpbmRPckNyZWF0ZUpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKGV4ZWMs
IHZhbHVlLCB0cnVlKSk7Ci0gICAgfQorICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+YXNzb2Np
YXRlZEZyYW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIGltcGwo
KS0+c2V0T25hYm9ydCh0b0pTRE9NV2luZG93KGZyYW1lKS0+ZmluZE9yQ3JlYXRlSlNVbnByb3Rl
Y3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgdmFsdWUsIHRydWUpKTsKIH0KIAogSlNWYWx1ZSogSlNY
TUxIdHRwUmVxdWVzdDo6b25lcnJvcihFeGVjU3RhdGUqKSBjb25zdAogewotICAgIGlmIChKU1Vu
cHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVj
dGVkRXZlbnRMaXN0ZW5lcio+KGltcGwoKS0+b25FcnJvckxpc3RlbmVyKCkpKSB7CisgICAgaWYg
KEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5w
cm90ZWN0ZWRFdmVudExpc3RlbmVyKj4oaW1wbCgpLT5vbmVycm9yKCkpKSB7CiAgICAgICAgIGlm
IChKU09iamVjdCogbGlzdGVuZXJPYmogPSBsaXN0ZW5lci0+bGlzdGVuZXJPYmooKSkKICAgICAg
ICAgICAgIHJldHVybiBsaXN0ZW5lck9iajsKICAgICB9CkBAIC0xMzQsMTUgKzEzNCwxNSBAQCBK
U1ZhbHVlKiBKU1hNTEh0dHBSZXF1ZXN0OjpvbmVycm9yKEV4ZWNTCiAKIHZvaWQgSlNYTUxIdHRw
UmVxdWVzdDo6c2V0T25lcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUqIHZhbHVlKQogewot
ICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBpbXBsKCktPmRvY3VtZW50KCkpIHsKLSAgICAg
ICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpKQotICAgICAgICAgICAgaW1w
bCgpLT5zZXRPbkVycm9yTGlzdGVuZXIodG9KU0RPTVdpbmRvdyhmcmFtZSktPmZpbmRPckNyZWF0
ZUpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKGV4ZWMsIHZhbHVlLCB0cnVlKSk7Ci0gICAgfQor
ICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+YXNzb2NpYXRlZEZyYW1lKCk7CisgICAgaWYgKCFm
cmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIGltcGwoKS0+c2V0T25lcnJvcih0b0pTRE9NV2lu
ZG93KGZyYW1lKS0+ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywg
dmFsdWUsIHRydWUpKTsKIH0KIAogSlNWYWx1ZSogSlNYTUxIdHRwUmVxdWVzdDo6b25sb2FkKEV4
ZWNTdGF0ZSopIGNvbnN0CiB7Ci0gICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBs
aXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4oaW1wbCgp
LT5vbkxvYWRMaXN0ZW5lcigpKSkgeworICAgIGlmIChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5l
ciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+KGlt
cGwoKS0+b25sb2FkKCkpKSB7CiAgICAgICAgIGlmIChKU09iamVjdCogbGlzdGVuZXJPYmogPSBs
aXN0ZW5lci0+bGlzdGVuZXJPYmooKSkKICAgICAgICAgICAgIHJldHVybiBsaXN0ZW5lck9iajsK
ICAgICB9CkBAIC0xNTEsMTUgKzE1MSwxNSBAQCBKU1ZhbHVlKiBKU1hNTEh0dHBSZXF1ZXN0Ojpv
bmxvYWQoRXhlY1N0CiAKIHZvaWQgSlNYTUxIdHRwUmVxdWVzdDo6c2V0T25sb2FkKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSogdmFsdWUpCiB7Ci0gICAgaWYgKERvY3VtZW50KiBkb2N1bWVudCA9
IGltcGwoKS0+ZG9jdW1lbnQoKSkgewotICAgICAgICBpZiAoRnJhbWUqIGZyYW1lID0gZG9jdW1l
bnQtPmZyYW1lKCkpCi0gICAgICAgICAgICBpbXBsKCktPnNldE9uTG9hZExpc3RlbmVyKHRvSlNE
T01XaW5kb3coZnJhbWUpLT5maW5kT3JDcmVhdGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihl
eGVjLCB2YWx1ZSwgdHJ1ZSkpOwotICAgIH0KKyAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCktPmFz
c29jaWF0ZWRGcmFtZSgpOworICAgIGlmICghZnJhbWUpCisgICAgICAgIHJldHVybjsKKyAgICBp
bXBsKCktPnNldE9ubG9hZCh0b0pTRE9NV2luZG93KGZyYW1lKS0+ZmluZE9yQ3JlYXRlSlNVbnBy
b3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgdmFsdWUsIHRydWUpKTsKIH0KIAogSlNWYWx1ZSog
SlNYTUxIdHRwUmVxdWVzdDo6b25sb2Fkc3RhcnQoRXhlY1N0YXRlKikgY29uc3QKIHsKLSAgICBp
ZiAoSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNV
bnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqPihpbXBsKCktPm9uTG9hZFN0YXJ0TGlzdGVuZXIoKSkp
IHsKKyAgICBpZiAoSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gc3RhdGlj
X2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqPihpbXBsKCktPm9ubG9hZHN0YXJ0KCkp
KSB7CiAgICAgICAgIGlmIChKU09iamVjdCogbGlzdGVuZXJPYmogPSBsaXN0ZW5lci0+bGlzdGVu
ZXJPYmooKSkKICAgICAgICAgICAgIHJldHVybiBsaXN0ZW5lck9iajsKICAgICB9CkBAIC0xNjgs
MTUgKzE2OCwxNSBAQCBKU1ZhbHVlKiBKU1hNTEh0dHBSZXF1ZXN0OjpvbmxvYWRzdGFydChFCiAK
IHZvaWQgSlNYTUxIdHRwUmVxdWVzdDo6c2V0T25sb2Fkc3RhcnQoRXhlY1N0YXRlKiBleGVjLCBK
U1ZhbHVlKiB2YWx1ZSkKIHsKLSAgICBpZiAoRG9jdW1lbnQqIGRvY3VtZW50ID0gaW1wbCgpLT5k
b2N1bWVudCgpKSB7Ci0gICAgICAgIGlmIChGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUo
KSkKLSAgICAgICAgICAgIGltcGwoKS0+c2V0T25Mb2FkU3RhcnRMaXN0ZW5lcih0b0pTRE9NV2lu
ZG93KGZyYW1lKS0+ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywg
dmFsdWUsIHRydWUpKTsKLSAgICB9CisgICAgRnJhbWUqIGZyYW1lID0gaW1wbCgpLT5hc3NvY2lh
dGVkRnJhbWUoKTsKKyAgICBpZiAoIWZyYW1lKQorICAgICAgICByZXR1cm47CisgICAgaW1wbCgp
LT5zZXRPbmxvYWRzdGFydCh0b0pTRE9NV2luZG93KGZyYW1lKS0+ZmluZE9yQ3JlYXRlSlNVbnBy
b3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgdmFsdWUsIHRydWUpKTsKIH0KIAogSlNWYWx1ZSog
SlNYTUxIdHRwUmVxdWVzdDo6b25wcm9ncmVzcyhFeGVjU3RhdGUqKSBjb25zdAogewotICAgIGlm
IChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1Vu
cHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+KGltcGwoKS0+b25Qcm9ncmVzc0xpc3RlbmVyKCkpKSB7
CisgICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19j
YXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4oaW1wbCgpLT5vbnByb2dyZXNzKCkpKSB7
CiAgICAgICAgIGlmIChKU09iamVjdCogbGlzdGVuZXJPYmogPSBsaXN0ZW5lci0+bGlzdGVuZXJP
YmooKSkKICAgICAgICAgICAgIHJldHVybiBsaXN0ZW5lck9iajsKICAgICB9CkBAIC0xODUsMTAg
KzE4NSwxMCBAQCBKU1ZhbHVlKiBKU1hNTEh0dHBSZXF1ZXN0OjpvbnByb2dyZXNzKEV4CiAKIHZv
aWQgSlNYTUxIdHRwUmVxdWVzdDo6c2V0T25wcm9ncmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFs
dWUqIHZhbHVlKQogewotICAgIGlmIChEb2N1bWVudCogZG9jdW1lbnQgPSBpbXBsKCktPmRvY3Vt
ZW50KCkpIHsKLSAgICAgICAgaWYgKEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpKQot
ICAgICAgICAgICAgaW1wbCgpLT5zZXRPblByb2dyZXNzTGlzdGVuZXIodG9KU0RPTVdpbmRvdyhm
cmFtZSktPmZpbmRPckNyZWF0ZUpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKGV4ZWMsIHZhbHVl
LCB0cnVlKSk7Ci0gICAgfQorICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+YXNzb2NpYXRlZEZy
YW1lKCk7CisgICAgaWYgKCFmcmFtZSkKKyAgICAgICAgcmV0dXJuOworICAgIGltcGwoKS0+c2V0
T25wcm9ncmVzcyh0b0pTRE9NV2luZG93KGZyYW1lKS0+ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3Rl
ZEV2ZW50TGlzdGVuZXIoZXhlYywgdmFsdWUsIHRydWUpKTsKIH0KIAogLy8gQ3VzdG9tIGZ1bmN0
aW9ucwpAQCAtMjg2LDEwICsyODYsNyBAQCBKU1ZhbHVlKiBKU1hNTEh0dHBSZXF1ZXN0OjpvdmVy
cmlkZU1pbWVUCiAKIEpTVmFsdWUqIEpTWE1MSHR0cFJlcXVlc3Q6OmFkZEV2ZW50TGlzdGVuZXIo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBBcmdMaXN0JiBhcmdzKQogewotICAgIERvY3VtZW50KiBk
b2N1bWVudCA9IGltcGwoKS0+ZG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvY3VtZW50KQotICAgICAg
ICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJh
bWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCktPmFzc29jaWF0ZWRGcmFtZSgpOwogICAg
IGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogICAgIFJlZlB0cjxK
U1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcj4gbGlzdGVuZXIgPSB0b0pTRE9NV2luZG93KGZyYW1l
KS0+ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgYXJncy5hdChl
eGVjLCAxKSwgdHJ1ZSk7CkBAIC0zMDEsMTAgKzI5OCw3IEBAIEpTVmFsdWUqIEpTWE1MSHR0cFJl
cXVlc3Q6OmFkZEV2ZW50TGlzdGUKIAogSlNWYWx1ZSogSlNYTUxIdHRwUmVxdWVzdDo6cmVtb3Zl
RXZlbnRMaXN0ZW5lcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7Ci0g
ICAgRG9jdW1lbnQqIGRvY3VtZW50ID0gaW1wbCgpLT5kb2N1bWVudCgpOwotICAgIGlmICghZG9j
dW1lbnQpCi0gICAgICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwotICAgIEZyYW1lKiBmcmFtZSA9
IGRvY3VtZW50LT5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+YXNzb2NpYXRl
ZEZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuIGpzVW5kZWZpbmVkKCk7
CiAgICAgSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gdG9KU0RPTVdpbmRv
dyhmcmFtZSktPmZpbmRKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihleGVjLCBhcmdzLmF0KGV4
ZWMsIDEpLCB0cnVlKTsKQEAgLTMxNCwxMiArMzA4LDQgQEAgSlNWYWx1ZSogSlNYTUxIdHRwUmVx
dWVzdDo6cmVtb3ZlRXZlbnRMaQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCi1KU1Zh
bHVlKiBKU1hNTEh0dHBSZXF1ZXN0OjpkaXNwYXRjaEV2ZW50KEV4ZWNTdGF0ZSogZXhlYywgY29u
c3QgQXJnTGlzdCYgYXJncykKLXsKLSAgICBFeGNlcHRpb25Db2RlIGVjID0gMDsKLSAgICBib29s
IHJlc3VsdCA9IGltcGwoKS0+ZGlzcGF0Y2hFdmVudCh0b0V2ZW50KGFyZ3MuYXQoZXhlYywgMCkp
LCBlYyk7Ci0gICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsKLSAgICByZXR1cm4ganNCb29s
ZWFuKHJlc3VsdCk7ICAgIAotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBiaW5k
aW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0VXBsb2FkQ3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBi
aW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0VXBsb2FkQ3VzdG9tLmNwcAkocmV2aXNpb24gMzcx
MjEpCisrKyBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0VXBsb2FkQ3VzdG9tLmNwcAkod29y
a2luZyBjb3B5KQpAQCAtNTEsMTkgKzUxLDE5IEBAIHZvaWQgSlNYTUxIdHRwUmVxdWVzdFVwbG9h
ZDo6bWFyaygpCiAgICAgICAgICAgICB3cmFwcGVyLT5tYXJrKCk7CiAgICAgfQogCi0gICAgaWYg
KEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBvbkFib3J0TGlzdGVuZXIgPSBzdGF0aWNfY2Fz
dDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+KG1faW1wbC0+b25BYm9ydExpc3RlbmVyKCkp
KQorICAgIGlmIChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogb25BYm9ydExpc3RlbmVyID0g
c3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqPihtX2ltcGwtPm9uYWJvcnQo
KSkpCiAgICAgICAgIG9uQWJvcnRMaXN0ZW5lci0+bWFyaygpOwogCi0gICAgaWYgKEpTVW5wcm90
ZWN0ZWRFdmVudExpc3RlbmVyKiBvbkVycm9yTGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJv
dGVjdGVkRXZlbnRMaXN0ZW5lcio+KG1faW1wbC0+b25FcnJvckxpc3RlbmVyKCkpKQorICAgIGlm
IChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogb25FcnJvckxpc3RlbmVyID0gc3RhdGljX2Nh
c3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqPihtX2ltcGwtPm9uZXJyb3IoKSkpCiAgICAg
ICAgIG9uRXJyb3JMaXN0ZW5lci0+bWFyaygpOwogCi0gICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVu
dExpc3RlbmVyKiBvbkxvYWRMaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVu
dExpc3RlbmVyKj4obV9pbXBsLT5vbkxvYWRMaXN0ZW5lcigpKSkKKyAgICBpZiAoSlNVbnByb3Rl
Y3RlZEV2ZW50TGlzdGVuZXIqIG9uTG9hZExpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNVbnByb3Rl
Y3RlZEV2ZW50TGlzdGVuZXIqPihtX2ltcGwtPm9ubG9hZCgpKSkKICAgICAgICAgb25Mb2FkTGlz
dGVuZXItPm1hcmsoKTsKIAotICAgIGlmIChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogb25M
b2FkU3RhcnRMaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVy
Kj4obV9pbXBsLT5vbkxvYWRTdGFydExpc3RlbmVyKCkpKQorICAgIGlmIChKU1VucHJvdGVjdGVk
RXZlbnRMaXN0ZW5lciogb25Mb2FkU3RhcnRMaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90
ZWN0ZWRFdmVudExpc3RlbmVyKj4obV9pbXBsLT5vbmxvYWRzdGFydCgpKSkKICAgICAgICAgb25M
b2FkU3RhcnRMaXN0ZW5lci0+bWFyaygpOwogICAgIAotICAgIGlmIChKU1VucHJvdGVjdGVkRXZl
bnRMaXN0ZW5lciogb25Qcm9ncmVzc0xpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3Rl
ZEV2ZW50TGlzdGVuZXIqPihtX2ltcGwtPm9uUHJvZ3Jlc3NMaXN0ZW5lcigpKSkKKyAgICBpZiAo
SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIG9uUHJvZ3Jlc3NMaXN0ZW5lciA9IHN0YXRpY19j
YXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4obV9pbXBsLT5vbnByb2dyZXNzKCkpKQog
ICAgICAgICBvblByb2dyZXNzTGlzdGVuZXItPm1hcmsoKTsKICAgICAKICAgICB0eXBlZGVmIFhN
TEh0dHBSZXF1ZXN0VXBsb2FkOjpFdmVudExpc3RlbmVyc01hcCBFdmVudExpc3RlbmVyc01hcDsK
QEAgLTc5LDcgKzc5LDcgQEAgdm9pZCBKU1hNTEh0dHBSZXF1ZXN0VXBsb2FkOjptYXJrKCkKIAog
SlNWYWx1ZSogSlNYTUxIdHRwUmVxdWVzdFVwbG9hZDo6b25hYm9ydChFeGVjU3RhdGUqKSBjb25z
dAogewotICAgIGlmIChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBzdGF0
aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+KGltcGwoKS0+b25BYm9ydExpc3Rl
bmVyKCkpKSB7CisgICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9
IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4oaW1wbCgpLT5vbmFib3J0
KCkpKSB7CiAgICAgICAgIGlmIChKU09iamVjdCogbGlzdGVuZXJPYmogPSBsaXN0ZW5lci0+bGlz
dGVuZXJPYmooKSkKICAgICAgICAgICAgIHJldHVybiBsaXN0ZW5lck9iajsKICAgICB9CkBAIC04
OCwyMSArODgsMTUgQEAgSlNWYWx1ZSogSlNYTUxIdHRwUmVxdWVzdFVwbG9hZDo6b25hYm9ydAog
CiB2b2lkIEpTWE1MSHR0cFJlcXVlc3RVcGxvYWQ6OnNldE9uYWJvcnQoRXhlY1N0YXRlKiBleGVj
LCBKU1ZhbHVlKiB2YWx1ZSkKIHsKLSAgICBYTUxIdHRwUmVxdWVzdCogeG1sSHR0cFJlcXVlc3Qg
PSBpbXBsKCktPmFzc29jaWF0ZWRYTUxIdHRwUmVxdWVzdCgpOwotICAgIGlmICgheG1sSHR0cFJl
cXVlc3QpCi0gICAgICAgIHJldHVybjsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB4bWxIdHRw
UmVxdWVzdC0+ZG9jdW1lbnQoKTsKLSAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm47
Ci0gICAgRnJhbWUqIGZyYW1lID0gZG9jdW1lbnQtPmZyYW1lKCk7CisgICAgRnJhbWUqIGZyYW1l
ID0gaW1wbCgpLT5hc3NvY2lhdGVkRnJhbWUoKTsKICAgICBpZiAoIWZyYW1lKQogICAgICAgICBy
ZXR1cm47Ci0gICAgaW1wbCgpLT5zZXRPbkFib3J0TGlzdGVuZXIodG9KU0RPTVdpbmRvdyhmcmFt
ZSktPmZpbmRPckNyZWF0ZUpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKGV4ZWMsIHZhbHVlLCB0
cnVlKSk7CisgICAgaW1wbCgpLT5zZXRPbmFib3J0KHRvSlNET01XaW5kb3coZnJhbWUpLT5maW5k
T3JDcmVhdGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihleGVjLCB2YWx1ZSwgdHJ1ZSkpOwog
fQogCiBKU1ZhbHVlKiBKU1hNTEh0dHBSZXF1ZXN0VXBsb2FkOjpvbmVycm9yKEV4ZWNTdGF0ZSop
IGNvbnN0CiB7Ci0gICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9
IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4oaW1wbCgpLT5vbkVycm9y
TGlzdGVuZXIoKSkpIHsKKyAgICBpZiAoSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIGxpc3Rl
bmVyID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqPihpbXBsKCktPm9u
ZXJyb3IoKSkpIHsKICAgICAgICAgaWYgKEpTT2JqZWN0KiBsaXN0ZW5lck9iaiA9IGxpc3RlbmVy
LT5saXN0ZW5lck9iaigpKQogICAgICAgICAgICAgcmV0dXJuIGxpc3RlbmVyT2JqOwogICAgIH0K
QEAgLTExMSwyMSArMTA1LDE1IEBAIEpTVmFsdWUqIEpTWE1MSHR0cFJlcXVlc3RVcGxvYWQ6Om9u
ZXJyb3IKIAogdm9pZCBKU1hNTEh0dHBSZXF1ZXN0VXBsb2FkOjpzZXRPbmVycm9yKEV4ZWNTdGF0
ZSogZXhlYywgSlNWYWx1ZSogdmFsdWUpCiB7Ci0gICAgWE1MSHR0cFJlcXVlc3QqIHhtbEh0dHBS
ZXF1ZXN0ID0gaW1wbCgpLT5hc3NvY2lhdGVkWE1MSHR0cFJlcXVlc3QoKTsKLSAgICBpZiAoIXht
bEh0dHBSZXF1ZXN0KQotICAgICAgICByZXR1cm47Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0g
eG1sSHR0cFJlcXVlc3QtPmRvY3VtZW50KCk7Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAg
cmV0dXJuOwotICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOworICAgIEZyYW1l
KiBmcmFtZSA9IGltcGwoKS0+YXNzb2NpYXRlZEZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAg
ICAgICAgcmV0dXJuOwotICAgIGltcGwoKS0+c2V0T25FcnJvckxpc3RlbmVyKHRvSlNET01XaW5k
b3coZnJhbWUpLT5maW5kT3JDcmVhdGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihleGVjLCB2
YWx1ZSwgdHJ1ZSkpOworICAgIGltcGwoKS0+c2V0T25lcnJvcih0b0pTRE9NV2luZG93KGZyYW1l
KS0+ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgdmFsdWUsIHRy
dWUpKTsKIH0KIAogSlNWYWx1ZSogSlNYTUxIdHRwUmVxdWVzdFVwbG9hZDo6b25sb2FkKEV4ZWNT
dGF0ZSopIGNvbnN0CiB7Ci0gICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0
ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4oaW1wbCgpLT5v
bkxvYWRMaXN0ZW5lcigpKSkgeworICAgIGlmIChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciog
bGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+KGltcGwo
KS0+b25sb2FkKCkpKSB7CiAgICAgICAgIGlmIChKU09iamVjdCogbGlzdGVuZXJPYmogPSBsaXN0
ZW5lci0+bGlzdGVuZXJPYmooKSkKICAgICAgICAgICAgIHJldHVybiBsaXN0ZW5lck9iajsKICAg
ICB9CkBAIC0xMzQsMjEgKzEyMiwxNSBAQCBKU1ZhbHVlKiBKU1hNTEh0dHBSZXF1ZXN0VXBsb2Fk
OjpvbmxvYWQoCiAKIHZvaWQgSlNYTUxIdHRwUmVxdWVzdFVwbG9hZDo6c2V0T25sb2FkKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSogdmFsdWUpCiB7Ci0gICAgWE1MSHR0cFJlcXVlc3QqIHhtbEh0
dHBSZXF1ZXN0ID0gaW1wbCgpLT5hc3NvY2lhdGVkWE1MSHR0cFJlcXVlc3QoKTsKLSAgICBpZiAo
IXhtbEh0dHBSZXF1ZXN0KQotICAgICAgICByZXR1cm47Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50
ID0geG1sSHR0cFJlcXVlc3QtPmRvY3VtZW50KCk7Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAg
ICAgcmV0dXJuOwotICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOworICAgIEZy
YW1lKiBmcmFtZSA9IGltcGwoKS0+YXNzb2NpYXRlZEZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkK
ICAgICAgICAgcmV0dXJuOwotICAgIGltcGwoKS0+c2V0T25Mb2FkTGlzdGVuZXIodG9KU0RPTVdp
bmRvdyhmcmFtZSktPmZpbmRPckNyZWF0ZUpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKGV4ZWMs
IHZhbHVlLCB0cnVlKSk7CisgICAgaW1wbCgpLT5zZXRPbmxvYWQodG9KU0RPTVdpbmRvdyhmcmFt
ZSktPmZpbmRPckNyZWF0ZUpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKGV4ZWMsIHZhbHVlLCB0
cnVlKSk7CiB9CiAKIEpTVmFsdWUqIEpTWE1MSHR0cFJlcXVlc3RVcGxvYWQ6Om9ubG9hZHN0YXJ0
KEV4ZWNTdGF0ZSopIGNvbnN0CiB7Ci0gICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVy
KiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4oaW1w
bCgpLT5vbkxvYWRTdGFydExpc3RlbmVyKCkpKSB7CisgICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVu
dExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3Rl
bmVyKj4oaW1wbCgpLT5vbmxvYWRzdGFydCgpKSkgewogICAgICAgICBpZiAoSlNPYmplY3QqIGxp
c3RlbmVyT2JqID0gbGlzdGVuZXItPmxpc3RlbmVyT2JqKCkpCiAgICAgICAgICAgICByZXR1cm4g
bGlzdGVuZXJPYmo7CiAgICAgfQpAQCAtMTU3LDIxICsxMzksMTUgQEAgSlNWYWx1ZSogSlNYTUxI
dHRwUmVxdWVzdFVwbG9hZDo6b25sb2FkcwogCiB2b2lkIEpTWE1MSHR0cFJlcXVlc3RVcGxvYWQ6
OnNldE9ubG9hZHN0YXJ0KEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSogdmFsdWUpCiB7Ci0gICAg
WE1MSHR0cFJlcXVlc3QqIHhtbEh0dHBSZXF1ZXN0ID0gaW1wbCgpLT5hc3NvY2lhdGVkWE1MSHR0
cFJlcXVlc3QoKTsKLSAgICBpZiAoIXhtbEh0dHBSZXF1ZXN0KQotICAgICAgICByZXR1cm47Ci0g
ICAgRG9jdW1lbnQqIGRvY3VtZW50ID0geG1sSHR0cFJlcXVlc3QtPmRvY3VtZW50KCk7Ci0gICAg
aWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJuOwotICAgIEZyYW1lKiBmcmFtZSA9IGRvY3Vt
ZW50LT5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+YXNzb2NpYXRlZEZyYW1l
KCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAgcmV0dXJuOwotICAgIGltcGwoKS0+c2V0T25M
b2FkU3RhcnRMaXN0ZW5lcih0b0pTRE9NV2luZG93KGZyYW1lKS0+ZmluZE9yQ3JlYXRlSlNVbnBy
b3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgdmFsdWUsIHRydWUpKTsKKyAgICBpbXBsKCktPnNl
dE9ubG9hZHN0YXJ0KHRvSlNET01XaW5kb3coZnJhbWUpLT5maW5kT3JDcmVhdGVKU1VucHJvdGVj
dGVkRXZlbnRMaXN0ZW5lcihleGVjLCB2YWx1ZSwgdHJ1ZSkpOwogfQogCiBKU1ZhbHVlKiBKU1hN
TEh0dHBSZXF1ZXN0VXBsb2FkOjpvbnByb2dyZXNzKEV4ZWNTdGF0ZSopIGNvbnN0CiB7Ci0gICAg
aWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpT
VW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4oaW1wbCgpLT5vblByb2dyZXNzTGlzdGVuZXIoKSkp
IHsKKyAgICBpZiAoSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gc3RhdGlj
X2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqPihpbXBsKCktPm9ucHJvZ3Jlc3MoKSkp
IHsKICAgICAgICAgaWYgKEpTT2JqZWN0KiBsaXN0ZW5lck9iaiA9IGxpc3RlbmVyLT5saXN0ZW5l
ck9iaigpKQogICAgICAgICAgICAgcmV0dXJuIGxpc3RlbmVyT2JqOwogICAgIH0KQEAgLTE4MCwy
NyArMTU2LDE1IEBAIEpTVmFsdWUqIEpTWE1MSHR0cFJlcXVlc3RVcGxvYWQ6Om9ucHJvZ3IKIAog
dm9pZCBKU1hNTEh0dHBSZXF1ZXN0VXBsb2FkOjpzZXRPbnByb2dyZXNzKEV4ZWNTdGF0ZSogZXhl
YywgSlNWYWx1ZSogdmFsdWUpCiB7Ci0gICAgWE1MSHR0cFJlcXVlc3QqIHhtbEh0dHBSZXF1ZXN0
ID0gaW1wbCgpLT5hc3NvY2lhdGVkWE1MSHR0cFJlcXVlc3QoKTsKLSAgICBpZiAoIXhtbEh0dHBS
ZXF1ZXN0KQotICAgICAgICByZXR1cm47Ci0gICAgRG9jdW1lbnQqIGRvY3VtZW50ID0geG1sSHR0
cFJlcXVlc3QtPmRvY3VtZW50KCk7Ci0gICAgaWYgKCFkb2N1bWVudCkKLSAgICAgICAgcmV0dXJu
OwotICAgIEZyYW1lKiBmcmFtZSA9IGRvY3VtZW50LT5mcmFtZSgpOworICAgIEZyYW1lKiBmcmFt
ZSA9IGltcGwoKS0+YXNzb2NpYXRlZEZyYW1lKCk7CiAgICAgaWYgKCFmcmFtZSkKICAgICAgICAg
cmV0dXJuOwotICAgIGltcGwoKS0+c2V0T25Qcm9ncmVzc0xpc3RlbmVyKHRvSlNET01XaW5kb3co
ZnJhbWUpLT5maW5kT3JDcmVhdGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihleGVjLCB2YWx1
ZSwgdHJ1ZSkpOworICAgIGltcGwoKS0+c2V0T25wcm9ncmVzcyh0b0pTRE9NV2luZG93KGZyYW1l
KS0+ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgdmFsdWUsIHRy
dWUpKTsKIH0KIAogSlNWYWx1ZSogSlNYTUxIdHRwUmVxdWVzdFVwbG9hZDo6YWRkRXZlbnRMaXN0
ZW5lcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7Ci0gICAgWE1MSHR0
cFJlcXVlc3QqIHhtbEh0dHBSZXF1ZXN0ID0gaW1wbCgpLT5hc3NvY2lhdGVkWE1MSHR0cFJlcXVl
c3QoKTsKLSAgICBpZiAoIXhtbEh0dHBSZXF1ZXN0KQotICAgICAgICByZXR1cm4ganNVbmRlZmlu
ZWQoKTsKLSAgICBEb2N1bWVudCogZG9jdW1lbnQgPSB4bWxIdHRwUmVxdWVzdC0+ZG9jdW1lbnQo
KTsKLSAgICBpZiAoIWRvY3VtZW50KQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAg
ICBGcmFtZSogZnJhbWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBp
bXBsKCktPmFzc29jaWF0ZWRGcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVy
biBqc1VuZGVmaW5lZCgpOwogICAgIFJlZlB0cjxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcj4g
bGlzdGVuZXIgPSB0b0pTRE9NV2luZG93KGZyYW1lKS0+ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3Rl
ZEV2ZW50TGlzdGVuZXIoZXhlYywgYXJncy5hdChleGVjLCAxKSwgdHJ1ZSk7CkBAIC0yMTIsMTMg
KzE3Niw3IEBAIEpTVmFsdWUqIEpTWE1MSHR0cFJlcXVlc3RVcGxvYWQ6OmFkZEV2ZW4KIAogSlNW
YWx1ZSogSlNYTUxIdHRwUmVxdWVzdFVwbG9hZDo6cmVtb3ZlRXZlbnRMaXN0ZW5lcihFeGVjU3Rh
dGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7Ci0gICAgWE1MSHR0cFJlcXVlc3QqIHht
bEh0dHBSZXF1ZXN0ID0gaW1wbCgpLT5hc3NvY2lhdGVkWE1MSHR0cFJlcXVlc3QoKTsKLSAgICBp
ZiAoIXhtbEh0dHBSZXF1ZXN0KQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBE
b2N1bWVudCogZG9jdW1lbnQgPSB4bWxIdHRwUmVxdWVzdC0+ZG9jdW1lbnQoKTsKLSAgICBpZiAo
IWRvY3VtZW50KQotICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKLSAgICBGcmFtZSogZnJh
bWUgPSBkb2N1bWVudC0+ZnJhbWUoKTsKKyAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCktPmFzc29j
aWF0ZWRGcmFtZSgpOwogICAgIGlmICghZnJhbWUpCiAgICAgICAgIHJldHVybiBqc1VuZGVmaW5l
ZCgpOwogICAgIEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHRvSlNET01X
aW5kb3coZnJhbWUpLT5maW5kSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgYXJncy5h
dChleGVjLCAxKSwgdHJ1ZSk7CkBAIC0yMjgsMTIgKzE4Niw0IEBAIEpTVmFsdWUqIEpTWE1MSHR0
cFJlcXVlc3RVcGxvYWQ6OnJlbW92ZUUKICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KIAot
SlNWYWx1ZSogSlNYTUxIdHRwUmVxdWVzdFVwbG9hZDo6ZGlzcGF0Y2hFdmVudChFeGVjU3RhdGUq
IGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCi17Ci0gICAgRXhjZXB0aW9uQ29kZSBlYyA9IDA7
Ci0gICAgYm9vbCByZXN1bHQgPSBpbXBsKCktPmRpc3BhdGNoRXZlbnQodG9FdmVudChhcmdzLmF0
KGV4ZWMsIDApKSwgZWMpOwotICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7Ci0gICAgcmV0
dXJuIGpzQm9vbGVhbihyZXN1bHQpOyAgICAKLX0KLQogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJ
bmRleDogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0g
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHJldmlzaW9uIDM3MTIxKQorKysg
YmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9ySlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTE1
MDQsNiArMTUwNCw3IEBAIHN1YiBKU1ZhbHVlVG9OYXRpdmUKICAgICAkaW1wbEluY2x1ZGVzeyJG
bG9hdFJlY3QuaCJ9ID0gMSBpZiAkdHlwZSBlcSAiU1ZHUmVjdCI7CiAgICAgJGltcGxJbmNsdWRl
c3siSFRNTE9wdGlvbkVsZW1lbnQuaCJ9ID0gMSBpZiAkdHlwZSBlcSAiSFRNTE9wdGlvbkVsZW1l
bnQiOwogICAgICRpbXBsSW5jbHVkZXN7IkpTQ3VzdG9tVm9pZENhbGxiYWNrLmgifSA9IDEgaWYg
JHR5cGUgZXEgIlZvaWRDYWxsYmFjayI7CisgICAgJGltcGxJbmNsdWRlc3siRXZlbnQuaCJ9ID0g
MSBpZiAkdHlwZSBlcSAiRXZlbnQiOwogCiAgICAgIyBEZWZhdWx0LCBhc3N1bWUgYXV0b2dlbmVy
YXRlZCB0eXBlIGNvbnZlcnNpb24gcm91dGluZXMKICAgICAkaW1wbEluY2x1ZGVzeyJKUyR0eXBl
LmgifSA9IDE7CkluZGV4OiBkb20vRXZlbnRUYXJnZXQuaAo9PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkb20vRXZl
bnRUYXJnZXQuaAkocmV2aXNpb24gMzcxMjEpCisrKyBkb20vRXZlbnRUYXJnZXQuaAkod29ya2lu
ZyBjb3B5KQpAQCAtNDEsNiArNDEsNyBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3Mg
RXZlbnQ7CiAgICAgY2xhc3MgRXZlbnRMaXN0ZW5lcjsKICAgICBjbGFzcyBFdmVudFRhcmdldE5v
ZGU7CisgICAgY2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgTWVzc2FnZVBvcnQ7CiAgICAgY2xhc3Mg
UmVnaXN0ZXJlZEV2ZW50TGlzdGVuZXI7CiAgICAgY2xhc3MgU1ZHRWxlbWVudEluc3RhbmNlOwpA
QCAtNjUsNiArNjYsOCBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHZpcnR1YWwgU1ZH
RWxlbWVudEluc3RhbmNlKiB0b1NWR0VsZW1lbnRJbnN0YW5jZSgpOwogI2VuZGlmCiAKKyAgICAg
ICAgdmlydHVhbCBGcmFtZSogYXNzb2NpYXRlZEZyYW1lKCkgY29uc3QgPSAwOworCiAgICAgICAg
IHZpcnR1YWwgdm9pZCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0cmluZyYgZXZlbnRU
eXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVzZUNhcHR1cmUpID0gMDsKICAg
ICAgICAgdmlydHVhbCB2b2lkIHJlbW92ZUV2ZW50TGlzdGVuZXIoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUsIEV2ZW50TGlzdGVuZXIqLCBib29sIHVzZUNhcHR1cmUpID0gMDsKICAgICAg
ICAgdmlydHVhbCBib29sIGRpc3BhdGNoRXZlbnQoUGFzc1JlZlB0cjxFdmVudD4sIEV4Y2VwdGlv
bkNvZGUmLCBib29sIHRlbXBFdmVudCA9IGZhbHNlKSA9IDA7CkluZGV4OiBkb20vRXZlbnRUYXJn
ZXROb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkb20vRXZlbnRUYXJnZXROb2RlLmNwcAkocmV2aXNp
b24gMzcxMjEpCisrKyBkb20vRXZlbnRUYXJnZXROb2RlLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
NzIsNiArNzIsMTEgQEAgRXZlbnRUYXJnZXROb2RlOjp+RXZlbnRUYXJnZXROb2RlKCkKICAgICBt
X3JlZ2RMaXN0ZW5lcnMgPSAwOwogfQogCitGcmFtZSogRXZlbnRUYXJnZXROb2RlOjphc3NvY2lh
dGVkRnJhbWUoKSBjb25zdAoreworICAgIHJldHVybiBkb2N1bWVudCgpLT5mcmFtZSgpOworfQor
CiB2b2lkIEV2ZW50VGFyZ2V0Tm9kZTo6aW5zZXJ0ZWRJbnRvRG9jdW1lbnQoKQogewogICAgIGlm
IChtX3JlZ2RMaXN0ZW5lcnMgJiYgIW1fcmVnZExpc3RlbmVycy0+aXNFbXB0eSgpKQpJbmRleDog
ZG9tL0V2ZW50VGFyZ2V0Tm9kZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGRvbS9FdmVudFRhcmdldE5vZGUu
aAkocmV2aXNpb24gMzcxMjEpCisrKyBkb20vRXZlbnRUYXJnZXROb2RlLmgJKHdvcmtpbmcgY29w
eSkKQEAgLTMzLDggKzMzLDcgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogY2xhc3MgQXR0cmlidXRl
OwogY2xhc3MgRnJhbWU7CiAKLWNsYXNzIEV2ZW50VGFyZ2V0Tm9kZSA6IHB1YmxpYyBOb2RlLAot
ICAgICAgICAgICAgICAgICAgICAgICAgcHVibGljIEV2ZW50VGFyZ2V0IHsKK2NsYXNzIEV2ZW50
VGFyZ2V0Tm9kZSA6IHB1YmxpYyBOb2RlLCBwdWJsaWMgRXZlbnRUYXJnZXQgewogcHVibGljOgog
ICAgIEV2ZW50VGFyZ2V0Tm9kZShEb2N1bWVudCosIGJvb2wgaXNFbGVtZW50ID0gZmFsc2UsIGJv
b2wgaXNDb250YWluZXIgPSBmYWxzZSk7CiAgICAgdmlydHVhbCB+RXZlbnRUYXJnZXROb2RlKCk7
CkBAIC00Miw2ICs0MSw4IEBAIHB1YmxpYzoKICAgICB2aXJ0dWFsIGJvb2wgaXNFdmVudFRhcmdl
dE5vZGUoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAgICAgdmlydHVhbCBFdmVudFRhcmdldE5v
ZGUqIHRvTm9kZSgpIHsgcmV0dXJuIHRoaXM7IH0KIAorICAgIEZyYW1lKiBhc3NvY2lhdGVkRnJh
bWUoKSBjb25zdDsKKwogICAgIHZpcnR1YWwgdm9pZCBhZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+LCBib29sIHVz
ZUNhcHR1cmUpOwogICAgIHZpcnR1YWwgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0
b21pY1N0cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiwgYm9vbCB1c2VDYXB0dXJlKTsK
ICAgICB2aXJ0dWFsIGJvb2wgZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiwgRXhjZXB0
aW9uQ29kZSYsIGJvb2wgdGVtcEV2ZW50ID0gZmFsc2UpOwpJbmRleDogZG9tL0V2ZW50VGFyZ2V0
Tm9kZS5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PQotLS0gZG9tL0V2ZW50VGFyZ2V0Tm9kZS5pZGwJKHJldmlzaW9u
IDM3MTIxKQorKysgZG9tL0V2ZW50VGFyZ2V0Tm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTc4
LDcgKzc4LDcgQEAgbW9kdWxlIGNvcmUgewogICAgICAgICBbQ3VzdG9tXSB2b2lkIHJlbW92ZUV2
ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCiAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIHVzZUNhcHR1cmUpOwot
ICAgICAgICBbQ3VzdG9tXSBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZlbnQpCisg
ICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldmVudCkKICAgICAgICAgICAg
IHJhaXNlcyhFdmVudEV4Y2VwdGlvbik7CiAgICAgfTsKIApJbmRleDogZG9tL01lc3NhZ2VQb3J0
LmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSBkb20vTWVzc2FnZVBvcnQuY3BwCShyZXZpc2lvbiAzNzEyMSkK
KysrIGRvbS9NZXNzYWdlUG9ydC5jcHAJKHdvcmtpbmcgY29weSkKQEAgLTgxLDYgKzgxLDEzIEBA
IE1lc3NhZ2VQb3J0Ojp+TWVzc2FnZVBvcnQoKQogICAgICAgICBtX2RvY3VtZW50LT5kZXN0cm95
ZWRNZXNzYWdlUG9ydCh0aGlzKTsKIH0KIAorRnJhbWUqIE1lc3NhZ2VQb3J0Ojphc3NvY2lhdGVk
RnJhbWUoKSBjb25zdAoreworICAgIGlmICghbV9kb2N1bWVudCkKKyAgICAgICAgcmV0dXJuIDA7
CisgICAgcmV0dXJuIG1fZG9jdW1lbnQtPmZyYW1lKCk7Cit9CisKIFBhc3NSZWZQdHI8TWVzc2Fn
ZVBvcnQ+IE1lc3NhZ2VQb3J0OjpjbG9uZShEb2N1bWVudCogbmV3T3duZXIsIEV4Y2VwdGlvbkNv
ZGUmIGVjKQogewogICAgIGlmICghbV9lbnRhbmdsZWRQb3J0KSB7CkluZGV4OiBkb20vTWVzc2Fn
ZVBvcnQuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09Ci0tLSBkb20vTWVzc2FnZVBvcnQuaAkocmV2aXNpb24gMzcxMjEp
CisrKyBkb20vTWVzc2FnZVBvcnQuaAkod29ya2luZyBjb3B5KQpAQCAtNDIsNiArNDIsNyBAQCBu
YW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgY2xhc3MgQXRvbWljU3RyaW5nSW1wbDsKICAgICBjbGFz
cyBEb2N1bWVudDsKICAgICBjbGFzcyBFdmVudDsKKyAgICBjbGFzcyBGcmFtZTsKICAgICBjbGFz
cyBTdHJpbmc7CiAKICAgICBjbGFzcyBNZXNzYWdlUG9ydCA6IHB1YmxpYyBSZWZDb3VudGVkPE1l
c3NhZ2VQb3J0PiwgcHVibGljIEV2ZW50VGFyZ2V0IHsKQEAgLTY2LDggKzY3LDExIEBAIG5hbWVz
cGFjZSBXZWJDb3JlIHsKIAogICAgICAgICB2b2lkIGNvbnRleHREZXN0cm95ZWQoKSB7IG1fZG9j
dW1lbnQgPSAwOyB9IAogICAgICAgICBEb2N1bWVudCogZG9jdW1lbnQoKSB7IHJldHVybiBtX2Rv
Y3VtZW50OyB9CisKICAgICAgICAgdmlydHVhbCBNZXNzYWdlUG9ydCogdG9NZXNzYWdlUG9ydCgp
IHsgcmV0dXJuIHRoaXM7IH0KIAorICAgICAgICB2aXJ0dWFsIEZyYW1lKiBhc3NvY2lhdGVkRnJh
bWUoKSBjb25zdDsKKwogICAgICAgICB2b2lkIGRpc3BhdGNoTWVzc2FnZXMoKTsKICAgICAgICAg
dm9pZCBxdWV1ZUNsb3NlRXZlbnQoKTsKICAgICAgICAgdm9pZCBkaXNwYXRjaENsb3NlRXZlbnQo
KTsKQEAgLTgzLDExICs4NywxMSBAQCBuYW1lc3BhY2UgV2ViQ29yZSB7CiAgICAgICAgIHVzaW5n
IFJlZkNvdW50ZWQ8TWVzc2FnZVBvcnQ+OjpyZWY7CiAgICAgICAgIHVzaW5nIFJlZkNvdW50ZWQ8
TWVzc2FnZVBvcnQ+OjpkZXJlZjsKIAotICAgICAgICB2b2lkIHNldE9uTWVzc2FnZUxpc3RlbmVy
KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uTWVzc2FnZUxp
c3RlbmVyID0gZXZlbnRMaXN0ZW5lcjsgfQotICAgICAgICBFdmVudExpc3RlbmVyKiBvbk1lc3Nh
Z2VMaXN0ZW5lcigpIGNvbnN0IHsgcmV0dXJuIG1fb25NZXNzYWdlTGlzdGVuZXIuZ2V0KCk7IH0K
KyAgICAgICAgdm9pZCBzZXRPbm1lc3NhZ2UoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVu
dExpc3RlbmVyKSB7IG1fb25NZXNzYWdlTGlzdGVuZXIgPSBldmVudExpc3RlbmVyOyB9CisgICAg
ICAgIEV2ZW50TGlzdGVuZXIqIG9ubWVzc2FnZSgpIGNvbnN0IHsgcmV0dXJuIG1fb25NZXNzYWdl
TGlzdGVuZXIuZ2V0KCk7IH0KIAotICAgICAgICB2b2lkIHNldE9uQ2xvc2VMaXN0ZW5lcihQYXNz
UmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbkNsb3NlTGlzdGVuZXIg
PSBldmVudExpc3RlbmVyOyB9Ci0gICAgICAgIEV2ZW50TGlzdGVuZXIqIG9uQ2xvc2VMaXN0ZW5l
cigpIGNvbnN0IHsgcmV0dXJuIG1fb25DbG9zZUxpc3RlbmVyLmdldCgpOyB9CisgICAgICAgIHZv
aWQgc2V0T25jbG9zZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsg
bV9vbkNsb3NlTGlzdGVuZXIgPSBldmVudExpc3RlbmVyOyB9CisgICAgICAgIEV2ZW50TGlzdGVu
ZXIqIG9uY2xvc2UoKSBjb25zdCB7IHJldHVybiBtX29uQ2xvc2VMaXN0ZW5lci5nZXQoKTsgfQog
CiAgICAgcHJpdmF0ZToKICAgICAgICAgTWVzc2FnZVBvcnQoRG9jdW1lbnQqKTsKSW5kZXg6IGRv
bS9NZXNzYWdlUG9ydC5pZGwKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZG9tL01lc3NhZ2VQb3J0LmlkbAkocmV2
aXNpb24gMzcxMjEpCisrKyBkb20vTWVzc2FnZVBvcnQuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC00
OCw3ICs0OCw3IEBAIG1vZHVsZSBldmVudHMgewogICAgICAgICBbQ3VzdG9tXSB2b2lkIHJlbW92
ZUV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAogICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCiAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBpbiBib29sZWFuIHVzZUNhcHR1cmUp
OwotICAgICAgICBbQ3VzdG9tXSBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQor
ICAgICAgICBib29sZWFuIGRpc3BhdGNoRXZlbnQoaW4gRXZlbnQgZXZ0KQogICAgICAgICAgICAg
cmFpc2VzKEV2ZW50RXhjZXB0aW9uKTsKICNlbmRpZgogICAgIH07CkluZGV4OiBsb2FkZXIvYXBw
Y2FjaGUvRE9NQXBwbGljYXRpb25DYWNoZS5oCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxvYWRlci9hcHBjYWNo
ZS9ET01BcHBsaWNhdGlvbkNhY2hlLmgJKHJldmlzaW9uIDM3MTIxKQorKysgbG9hZGVyL2FwcGNh
Y2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaAkod29ya2luZyBjb3B5KQpAQCAtNzgsMjggKzc4LDI4
IEBAIHB1YmxpYzoKICAgICB1c2luZyBSZWZDb3VudGVkPERPTUFwcGxpY2F0aW9uQ2FjaGU+Ojpy
ZWY7CiAgICAgdXNpbmcgUmVmQ291bnRlZDxET01BcHBsaWNhdGlvbkNhY2hlPjo6ZGVyZWY7CiAK
LSAgICB2b2lkIHNldE9uQ2hlY2tpbmdMaXN0ZW5lcihQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IGV2ZW50TGlzdGVuZXIpIHsgbV9vbkNoZWNraW5nTGlzdGVuZXIgPSBldmVudExpc3RlbmVyOyB9
Ci0gICAgRXZlbnRMaXN0ZW5lciogb25DaGVja2luZ0xpc3RlbmVyKCkgY29uc3QgeyByZXR1cm4g
bV9vbkNoZWNraW5nTGlzdGVuZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldE9uY2hlY2tpbmcoUGFz
c1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25DaGVja2luZ0xpc3Rl
bmVyID0gZXZlbnRMaXN0ZW5lcjsgfQorICAgIEV2ZW50TGlzdGVuZXIqIG9uY2hlY2tpbmcoKSBj
b25zdCB7IHJldHVybiBtX29uQ2hlY2tpbmdMaXN0ZW5lci5nZXQoKTsgfQogCi0gICAgdm9pZCBz
ZXRPbkVycm9yTGlzdGVuZXIoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVy
KSB7IG1fb25FcnJvckxpc3RlbmVyID0gZXZlbnRMaXN0ZW5lcjsgfQotICAgIEV2ZW50TGlzdGVu
ZXIqIG9uRXJyb3JMaXN0ZW5lcigpIGNvbnN0IHsgcmV0dXJuIG1fb25FcnJvckxpc3RlbmVyLmdl
dCgpOyB9CisgICAgdm9pZCBzZXRPbmVycm9yKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZl
bnRMaXN0ZW5lcikgeyBtX29uRXJyb3JMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICBF
dmVudExpc3RlbmVyKiBvbmVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9vbkVycm9yTGlzdGVuZXIu
Z2V0KCk7IH0KIAotICAgIHZvaWQgc2V0T25Ob1VwZGF0ZUxpc3RlbmVyKFBhc3NSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uTm9VcGRhdGVMaXN0ZW5lciA9IGV2ZW50
TGlzdGVuZXI7IH0KLSAgICBFdmVudExpc3RlbmVyKiBvbk5vVXBkYXRlTGlzdGVuZXIoKSBjb25z
dCB7IHJldHVybiBtX29uTm9VcGRhdGVMaXN0ZW5lci5nZXQoKTsgfQorICAgIHZvaWQgc2V0T25u
b3VwZGF0ZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbk5v
VXBkYXRlTGlzdGVuZXIgPSBldmVudExpc3RlbmVyOyB9CisgICAgRXZlbnRMaXN0ZW5lciogb25u
b3VwZGF0ZSgpIGNvbnN0IHsgcmV0dXJuIG1fb25Ob1VwZGF0ZUxpc3RlbmVyLmdldCgpOyB9CiAK
LSAgICB2b2lkIHNldE9uRG93bmxvYWRpbmdMaXN0ZW5lcihQYXNzUmVmUHRyPEV2ZW50TGlzdGVu
ZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbkRvd25sb2FkaW5nTGlzdGVuZXIgPSBldmVudExpc3Rl
bmVyOyB9Ci0gICAgRXZlbnRMaXN0ZW5lciogb25Eb3dubG9hZGluZ0xpc3RlbmVyKCkgY29uc3Qg
eyByZXR1cm4gbV9vbkRvd25sb2FkaW5nTGlzdGVuZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldE9u
ZG93bmxvYWRpbmcoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1f
b25Eb3dubG9hZGluZ0xpc3RlbmVyID0gZXZlbnRMaXN0ZW5lcjsgfQorICAgIEV2ZW50TGlzdGVu
ZXIqIG9uZG93bmxvYWRpbmcoKSBjb25zdCB7IHJldHVybiBtX29uRG93bmxvYWRpbmdMaXN0ZW5l
ci5nZXQoKTsgfQogICAgIAotICAgIHZvaWQgc2V0T25Qcm9ncmVzc0xpc3RlbmVyKFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uUHJvZ3Jlc3NMaXN0ZW5lciA9
IGV2ZW50TGlzdGVuZXI7IH0KLSAgICBFdmVudExpc3RlbmVyKiBvblByb2dyZXNzTGlzdGVuZXIo
KSBjb25zdCB7IHJldHVybiBtX29uUHJvZ3Jlc3NMaXN0ZW5lci5nZXQoKTsgfQorICAgIHZvaWQg
c2V0T25wcm9ncmVzcyhQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsg
bV9vblByb2dyZXNzTGlzdGVuZXIgPSBldmVudExpc3RlbmVyOyB9CisgICAgRXZlbnRMaXN0ZW5l
ciogb25wcm9ncmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fb25Qcm9ncmVzc0xpc3RlbmVyLmdldCgp
OyB9CiAKLSAgICB2b2lkIHNldE9uVXBkYXRlUmVhZHlMaXN0ZW5lcihQYXNzUmVmUHRyPEV2ZW50
TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vblVwZGF0ZVJlYWR5TGlzdGVuZXIgPSBldmVu
dExpc3RlbmVyOyB9Ci0gICAgRXZlbnRMaXN0ZW5lciogb25VcGRhdGVSZWFkeUxpc3RlbmVyKCkg
Y29uc3QgeyByZXR1cm4gbV9vblVwZGF0ZVJlYWR5TGlzdGVuZXIuZ2V0KCk7IH0KKyAgICB2b2lk
IHNldE9udXBkYXRlcmVhZHkoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVy
KSB7IG1fb25VcGRhdGVSZWFkeUxpc3RlbmVyID0gZXZlbnRMaXN0ZW5lcjsgfQorICAgIEV2ZW50
TGlzdGVuZXIqIG9udXBkYXRlcmVhZHkoKSBjb25zdCB7IHJldHVybiBtX29uVXBkYXRlUmVhZHlM
aXN0ZW5lci5nZXQoKTsgfQogCi0gICAgdm9pZCBzZXRPbkNhY2hlZExpc3RlbmVyKFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uQ2FjaGVkTGlzdGVuZXIgPSBl
dmVudExpc3RlbmVyOyB9Ci0gICAgRXZlbnRMaXN0ZW5lciogb25DYWNoZWRMaXN0ZW5lcigpIGNv
bnN0IHsgcmV0dXJuIG1fb25DYWNoZWRMaXN0ZW5lci5nZXQoKTsgfQotICAgIAotICAgIEZyYW1l
KiBmcmFtZSgpIGNvbnN0IHsgcmV0dXJuIG1fZnJhbWU7IH0KKyAgICB2b2lkIHNldE9uY2FjaGVk
KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uQ2FjaGVkTGlz
dGVuZXIgPSBldmVudExpc3RlbmVyOyB9CisgICAgRXZlbnRMaXN0ZW5lciogb25jYWNoZWQoKSBj
b25zdCB7IHJldHVybiBtX29uQ2FjaGVkTGlzdGVuZXIuZ2V0KCk7IH0KKworICAgIEZyYW1lKiBh
c3NvY2lhdGVkRnJhbWUoKSBjb25zdCB7IHJldHVybiBtX2ZyYW1lOyB9CiAgICAgRE9NQXBwbGlj
YXRpb25DYWNoZSogdG9ET01BcHBsaWNhdGlvbkNhY2hlKCkgeyByZXR1cm4gdGhpczsgfQogCiAg
ICAgdm9pZCBjYWxsQ2hlY2tpbmdMaXN0ZW5lcigpOwpJbmRleDogbG9hZGVyL2FwcGNhY2hlL0RP
TUFwcGxpY2F0aW9uQ2FjaGUuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGxvYWRlci9hcHBjYWNoZS9ET01B
cHBsaWNhdGlvbkNhY2hlLmlkbAkocmV2aXNpb24gMzcxMjEpCisrKyBsb2FkZXIvYXBwY2FjaGUv
RE9NQXBwbGljYXRpb25DYWNoZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI1LDkgKzI1LDEwIEBA
CiAgCiBtb2R1bGUgb2ZmbGluZSB7CiAgCi0gICAgaW50ZXJmYWNlIFtDb25kaXRpb25hbD1PRkZM
SU5FX1dFQl9BUFBMSUNBVElPTlMsCi0gICAgICAgICAgICAgICBDdXN0b21NYXJrRnVuY3Rpb25d
IERPTUFwcGxpY2F0aW9uQ2FjaGUgewotICAgIAorICAgIGludGVyZmFjZSBbCisgICAgICAgIENv
bmRpdGlvbmFsPU9GRkxJTkVfV0VCX0FQUExJQ0FUSU9OUywKKyAgICAgICAgQ3VzdG9tTWFya0Z1
bmN0aW9uCisgICAgXSBET01BcHBsaWNhdGlvbkNhY2hlIHsKICAgICAgICAgLy8gdXBkYXRlIHN0
YXR1cwogICAgICAgICBjb25zdCB1bnNpZ25lZCBzaG9ydCBVTkNBQ0hFRCA9IDA7CiAgICAgICAg
IGNvbnN0IHVuc2lnbmVkIHNob3J0IElETEUgPSAxOwpAQCAtNjYsOCArNjcsOCBAQCBtb2R1bGUg
b2ZmbGluZSB7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBE
T01TdHJpbmcgdHlwZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgICAgIFtDdXN0b21d
IGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCisgICAgICAgIGJvb2xlYW4gZGlz
cGF0Y2hFdmVudChpbiBFdmVudCBldnQpCiAgICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRp
b24pOwotfTsKKyAgICB9OwogCiB9CkluZGV4OiBzdmcvRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5z
dGFuY2UuY3BwCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT0KLS0tIHN2Zy9FdmVudFRhcmdldFNWR0VsZW1lbnRJbnN0YW5j
ZS5jcHAJKHJldmlzaW9uIDM3MTIxKQorKysgc3ZnL0V2ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3Rh
bmNlLmNwcAkod29ya2luZyBjb3B5KQpAQCAtNDAsMTYgKzQwLDIzIEBAIEV2ZW50VGFyZ2V0U1ZH
RWxlbWVudEluc3RhbmNlOjp+RXZlbnRUYXIKIHsKIH0KIAorRnJhbWUqIEV2ZW50VGFyZ2V0U1ZH
RWxlbWVudEluc3RhbmNlOjphc3NvY2lhdGVkRnJhbWUoKSBjb25zdAoreworICAgIGlmIChTVkdF
bGVtZW50KiBlbGVtZW50ID0gY29ycmVzcG9uZGluZ0VsZW1lbnQoKSkKKyAgICAgICAgcmV0dXJu
IGVsZW1lbnQtPmFzc29jaWF0ZWRGcmFtZSgpOworICAgIHJldHVybiAwOworfQorCiB2b2lkIEV2
ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlOjphZGRFdmVudExpc3RlbmVyKGNvbnN0IEF0b21p
Y1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGxpc3RlbmVyLCBi
b29sIHVzZUNhcHR1cmUpCiB7Ci0gICAgaWYgKEV2ZW50VGFyZ2V0Tm9kZSogbm9kZSA9IGNvcnJl
c3BvbmRpbmdFbGVtZW50KCkpCi0gICAgICAgIG5vZGUtPmFkZEV2ZW50TGlzdGVuZXIoZXZlbnRU
eXBlLCBsaXN0ZW5lciwgdXNlQ2FwdHVyZSk7CisgICAgaWYgKFNWR0VsZW1lbnQqIGVsZW1lbnQg
PSBjb3JyZXNwb25kaW5nRWxlbWVudCgpKQorICAgICAgICBlbGVtZW50LT5hZGRFdmVudExpc3Rl
bmVyKGV2ZW50VHlwZSwgbGlzdGVuZXIsIHVzZUNhcHR1cmUpOwogfQogCiB2b2lkIEV2ZW50VGFy
Z2V0U1ZHRWxlbWVudEluc3RhbmNlOjpyZW1vdmVFdmVudExpc3RlbmVyKGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlLCBFdmVudExpc3RlbmVyKiBsaXN0ZW5lciwgYm9vbCB1c2VDYXB0dXJl
KQogewotICAgIGlmIChFdmVudFRhcmdldE5vZGUqIG5vZGUgPSBjb3JyZXNwb25kaW5nRWxlbWVu
dCgpKQotICAgICAgICBub2RlLT5yZW1vdmVFdmVudExpc3RlbmVyKGV2ZW50VHlwZSwgbGlzdGVu
ZXIsIHVzZUNhcHR1cmUpOworICAgIGlmIChTVkdFbGVtZW50KiBlbGVtZW50ID0gY29ycmVzcG9u
ZGluZ0VsZW1lbnQoKSkKKyAgICAgICAgZWxlbWVudC0+cmVtb3ZlRXZlbnRMaXN0ZW5lcihldmVu
dFR5cGUsIGxpc3RlbmVyLCB1c2VDYXB0dXJlKTsKIH0KIAogYm9vbCBFdmVudFRhcmdldFNWR0Vs
ZW1lbnRJbnN0YW5jZTo6ZGlzcGF0Y2hFdmVudChQYXNzUmVmUHRyPEV2ZW50PiBlLCBFeGNlcHRp
b25Db2RlJiBlYywgYm9vbCB0ZW1wRXZlbnQpCkBAIC02MiwxNCArNjksMTQgQEAgYm9vbCBFdmVu
dFRhcmdldFNWR0VsZW1lbnRJbnN0YW5jZTo6ZGlzcAogICAgIH0KIAogICAgIC8vIFRoZSBldmVu
dCBoYXMgdG8gYmUgZGlzcGF0Y2hlZCB0byB0aGUgc2hhZG93VHJlZUVsZW1lbnQoKSwgbm90IHRo
ZSBjb3JyZXNwb25kaW5nRWxlbWVudCgpIQotICAgIEV2ZW50VGFyZ2V0Tm9kZSogbm9kZSA9IHNo
YWRvd1RyZWVFbGVtZW50KCk7Ci0gICAgaWYgKCFub2RlKQorICAgIFNWR0VsZW1lbnQqIGVsZW1l
bnQgPSBzaGFkb3dUcmVlRWxlbWVudCgpOworICAgIGlmICghZWxlbWVudCkKICAgICAgICAgcmV0
dXJuIGZhbHNlOwogCiAgICAgZXZ0LT5zZXRUYXJnZXQodGhpcyk7CiAKLSAgICBSZWZQdHI8RnJh
bWVWaWV3PiB2aWV3ID0gbm9kZS0+ZG9jdW1lbnQoKS0+dmlldygpOwotICAgIHJldHVybiBub2Rl
LT5kaXNwYXRjaEdlbmVyaWNFdmVudChldnQucmVsZWFzZSgpLCBlYywgdGVtcEV2ZW50KTsKKyAg
ICBSZWZQdHI8RnJhbWVWaWV3PiB2aWV3ID0gZWxlbWVudC0+ZG9jdW1lbnQoKS0+dmlldygpOwor
ICAgIHJldHVybiBlbGVtZW50LT5kaXNwYXRjaEdlbmVyaWNFdmVudChldnQucmVsZWFzZSgpLCBl
YywgdGVtcEV2ZW50KTsKIH0KIAogfSAvLyBuYW1lc3BhY2UgV2ViQ29yZQpJbmRleDogc3ZnL0V2
ZW50VGFyZ2V0U1ZHRWxlbWVudEluc3RhbmNlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gc3ZnL0V2ZW50VGFy
Z2V0U1ZHRWxlbWVudEluc3RhbmNlLmgJKHJldmlzaW9uIDM3MTIxKQorKysgc3ZnL0V2ZW50VGFy
Z2V0U1ZHRWxlbWVudEluc3RhbmNlLmgJKHdvcmtpbmcgY29weSkKQEAgLTM2LDYgKzM2LDggQEAg
cHVibGljOgogCiAgICAgdmlydHVhbCBib29sIGlzRXZlbnRUYXJnZXRTVkdFbGVtZW50SW5zdGFu
Y2UoKSBjb25zdCB7IHJldHVybiB0cnVlOyB9CiAKKyAgICB2aXJ0dWFsIEZyYW1lKiBhc3NvY2lh
dGVkRnJhbWUoKSBjb25zdDsKKwogICAgIHZpcnR1YWwgRXZlbnRUYXJnZXROb2RlKiB0b05vZGUo
KSB7IHJldHVybiBzaGFkb3dUcmVlRWxlbWVudCgpOyB9CiAgICAgdmlydHVhbCBFdmVudFRhcmdl
dFNWR0VsZW1lbnRJbnN0YW5jZSogdG9TVkdFbGVtZW50SW5zdGFuY2UoKSB7IHJldHVybiB0aGlz
OyB9CiAKSW5kZXg6IHhtbC9YTUxIdHRwUmVxdWVzdC5jcHAKPT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0geG1sL1hN
TEh0dHBSZXF1ZXN0LmNwcAkocmV2aXNpb24gMzcxMjEpCisrKyB4bWwvWE1MSHR0cFJlcXVlc3Qu
Y3BwCSh3b3JraW5nIGNvcHkpCkBAIC0yMzEsNiArMjMxLDEzIEBAIFhNTEh0dHBSZXF1ZXN0Ojp+
WE1MSHR0cFJlcXVlc3QoKQogICAgICAgICBtX3VwbG9hZC0+ZGlzY29ubmVjdFhNTEh0dHBSZXF1
ZXN0KCk7CiB9CiAKK0ZyYW1lKiBYTUxIdHRwUmVxdWVzdDo6YXNzb2NpYXRlZEZyYW1lKCkgY29u
c3QKK3sKKyAgICBpZiAoIW1fZG9jKQorICAgICAgICByZXR1cm4gMDsKKyAgICByZXR1cm4gbV9k
b2MtPmZyYW1lKCk7Cit9CisKIFhNTEh0dHBSZXF1ZXN0OjpTdGF0ZSBYTUxIdHRwUmVxdWVzdDo6
cmVhZHlTdGF0ZSgpIGNvbnN0CiB7CiAgICAgcmV0dXJuIG1fc3RhdGU7CkluZGV4OiB4bWwvWE1M
SHR0cFJlcXVlc3QuaAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB4bWwvWE1MSHR0cFJlcXVlc3QuaAkocmV2aXNp
b24gMzcxMjEpCisrKyB4bWwvWE1MSHR0cFJlcXVlc3QuaAkod29ya2luZyBjb3B5KQpAQCAtNDks
NiArNDksOCBAQCBwdWJsaWM6CiAKICAgICB2aXJ0dWFsIFhNTEh0dHBSZXF1ZXN0KiB0b1hNTEh0
dHBSZXF1ZXN0KCkgeyByZXR1cm4gdGhpczsgfQogCisgICAgRnJhbWUqIGFzc29jaWF0ZWRGcmFt
ZSgpIGNvbnN0OworCiAgICAgc3RhdGljIHZvaWQgZGV0YWNoUmVxdWVzdHMoRG9jdW1lbnQqKTsK
ICAgICBzdGF0aWMgdm9pZCBjYW5jZWxSZXF1ZXN0cyhEb2N1bWVudCopOwogCkBAIC03NSwyMyAr
NzcsMjMgQEAgcHVibGljOgogICAgIFhNTEh0dHBSZXF1ZXN0VXBsb2FkKiB1cGxvYWQoKTsKICAg
ICBYTUxIdHRwUmVxdWVzdFVwbG9hZCogb3B0aW9uYWxVcGxvYWQoKSBjb25zdCB7IHJldHVybiBt
X3VwbG9hZC5nZXQoKTsgfQogCi0gICAgdm9pZCBzZXRPblJlYWR5U3RhdGVDaGFuZ2VMaXN0ZW5l
cihQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vblJlYWR5U3Rh
dGVDaGFuZ2VMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7IH0KLSAgICBFdmVudExpc3RlbmVyKiBv
blJlYWR5U3RhdGVDaGFuZ2VMaXN0ZW5lcigpIGNvbnN0IHsgcmV0dXJuIG1fb25SZWFkeVN0YXRl
Q2hhbmdlTGlzdGVuZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldE9ucmVhZHlzdGF0ZWNoYW5nZShQ
YXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vblJlYWR5U3RhdGVD
aGFuZ2VMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICBFdmVudExpc3RlbmVyKiBvbnJl
YWR5c3RhdGVjaGFuZ2UoKSBjb25zdCB7IHJldHVybiBtX29uUmVhZHlTdGF0ZUNoYW5nZUxpc3Rl
bmVyLmdldCgpOyB9CiAKLSAgICB2b2lkIHNldE9uQWJvcnRMaXN0ZW5lcihQYXNzUmVmUHRyPEV2
ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbkFib3J0TGlzdGVuZXIgPSBldmVudExp
c3RlbmVyOyB9Ci0gICAgRXZlbnRMaXN0ZW5lciogb25BYm9ydExpc3RlbmVyKCkgY29uc3QgeyBy
ZXR1cm4gbV9vbkFib3J0TGlzdGVuZXIuZ2V0KCk7IH0KKyAgICB2b2lkIHNldE9uYWJvcnQoUGFz
c1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25BYm9ydExpc3RlbmVy
ID0gZXZlbnRMaXN0ZW5lcjsgfQorICAgIEV2ZW50TGlzdGVuZXIqIG9uYWJvcnQoKSBjb25zdCB7
IHJldHVybiBtX29uQWJvcnRMaXN0ZW5lci5nZXQoKTsgfQogCi0gICAgdm9pZCBzZXRPbkVycm9y
TGlzdGVuZXIoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25F
cnJvckxpc3RlbmVyID0gZXZlbnRMaXN0ZW5lcjsgfQotICAgIEV2ZW50TGlzdGVuZXIqIG9uRXJy
b3JMaXN0ZW5lcigpIGNvbnN0IHsgcmV0dXJuIG1fb25FcnJvckxpc3RlbmVyLmdldCgpOyB9Cisg
ICAgdm9pZCBzZXRPbmVycm9yKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5l
cikgeyBtX29uRXJyb3JMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICBFdmVudExpc3Rl
bmVyKiBvbmVycm9yKCkgY29uc3QgeyByZXR1cm4gbV9vbkVycm9yTGlzdGVuZXIuZ2V0KCk7IH0K
IAotICAgIHZvaWQgc2V0T25Mb2FkTGlzdGVuZXIoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBl
dmVudExpc3RlbmVyKSB7IG1fb25Mb2FkTGlzdGVuZXIgPSBldmVudExpc3RlbmVyOyB9Ci0gICAg
RXZlbnRMaXN0ZW5lciogb25Mb2FkTGlzdGVuZXIoKSBjb25zdCB7IHJldHVybiBtX29uTG9hZExp
c3RlbmVyLmdldCgpOyB9CisgICAgdm9pZCBzZXRPbmxvYWQoUGFzc1JlZlB0cjxFdmVudExpc3Rl
bmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25Mb2FkTGlzdGVuZXIgPSBldmVudExpc3RlbmVyOyB9
CisgICAgRXZlbnRMaXN0ZW5lciogb25sb2FkKCkgY29uc3QgeyByZXR1cm4gbV9vbkxvYWRMaXN0
ZW5lci5nZXQoKTsgfQogCi0gICAgdm9pZCBzZXRPbkxvYWRTdGFydExpc3RlbmVyKFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uTG9hZFN0YXJ0TGlzdGVuZXIg
PSBldmVudExpc3RlbmVyOyB9Ci0gICAgRXZlbnRMaXN0ZW5lciogb25Mb2FkU3RhcnRMaXN0ZW5l
cigpIGNvbnN0IHsgcmV0dXJuIG1fb25Mb2FkU3RhcnRMaXN0ZW5lci5nZXQoKTsgfQorICAgIHZv
aWQgc2V0T25sb2Fkc3RhcnQoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVy
KSB7IG1fb25Mb2FkU3RhcnRMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICBFdmVudExp
c3RlbmVyKiBvbmxvYWRzdGFydCgpIGNvbnN0IHsgcmV0dXJuIG1fb25Mb2FkU3RhcnRMaXN0ZW5l
ci5nZXQoKTsgfQogCi0gICAgdm9pZCBzZXRPblByb2dyZXNzTGlzdGVuZXIoUGFzc1JlZlB0cjxF
dmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKSB7IG1fb25Qcm9ncmVzc0xpc3RlbmVyID0gZXZl
bnRMaXN0ZW5lcjsgfQotICAgIEV2ZW50TGlzdGVuZXIqIG9uUHJvZ3Jlc3NMaXN0ZW5lcigpIGNv
bnN0IHsgcmV0dXJuIG1fb25Qcm9ncmVzc0xpc3RlbmVyLmdldCgpOyB9CisgICAgdm9pZCBzZXRP
bnByb2dyZXNzKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29u
UHJvZ3Jlc3NMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICBFdmVudExpc3RlbmVyKiBv
bnByb2dyZXNzKCkgY29uc3QgeyByZXR1cm4gbV9vblByb2dyZXNzTGlzdGVuZXIuZ2V0KCk7IH0K
IAogICAgIHR5cGVkZWYgVmVjdG9yPFJlZlB0cjxFdmVudExpc3RlbmVyPiA+IExpc3RlbmVyVmVj
dG9yOwogICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgTGlzdGVuZXJWZWN0
b3I+IEV2ZW50TGlzdGVuZXJzTWFwOwpJbmRleDogeG1sL1hNTEh0dHBSZXF1ZXN0LmlkbAo9PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09Ci0tLSB4bWwvWE1MSHR0cFJlcXVlc3QuaWRsCShyZXZpc2lvbiAzNzEyMSkKKysrIHht
bC9YTUxIdHRwUmVxdWVzdC5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTkyLDcgKzkyLDcgQEAgbW9k
dWxlIHhtbCB7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgcmVtb3ZlRXZlbnRMaXN0ZW5lcihpbiBE
T01TdHJpbmcgdHlwZSwgCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCAKICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gdXNlQ2FwdHVyZSk7Ci0gICAgICAgIFtDdXN0b21d
IGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCisgICAgICAgIGJvb2xlYW4gZGlz
cGF0Y2hFdmVudChpbiBFdmVudCBldnQpCiAgICAgICAgICAgICByYWlzZXMoRXZlbnRFeGNlcHRp
b24pOwogICAgIH07CiAKSW5kZXg6IHhtbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5jcHAKPT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PQotLS0geG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmNwcAkocmV2aXNpb24gMzcxMjEpCisr
KyB4bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuY3BwCSh3b3JraW5nIGNvcHkpCkBAIC0zMCw2ICsz
MCw4IEBACiAjaW5jbHVkZSAiRXZlbnQuaCIKICNpbmNsdWRlICJFdmVudEV4Y2VwdGlvbi5oIgog
I2luY2x1ZGUgIkV2ZW50TmFtZXMuaCIKKyNpbmNsdWRlICJGcmFtZS5oIgorI2luY2x1ZGUgIlhN
TEh0dHBSZXF1ZXN0LmgiCiAjaW5jbHVkZSAiWE1MSHR0cFJlcXVlc3RQcm9ncmVzc0V2ZW50Lmgi
CiAjaW5jbHVkZSA8d3RmL0Fzc2VydGlvbnMuaD4KIApAQCAtNDIsNiArNDQsMTQgQEAgWE1MSHR0
cFJlcXVlc3RVcGxvYWQ6OlhNTEh0dHBSZXF1ZXN0VXBsbwogewogfQogCitGcmFtZSogWE1MSHR0
cFJlcXVlc3RVcGxvYWQ6OmFzc29jaWF0ZWRGcmFtZSgpIGNvbnN0Cit7CisgICAgWE1MSHR0cFJl
cXVlc3QqIHhtbEh0dHBSZXF1ZXN0ID0gYXNzb2NpYXRlZFhNTEh0dHBSZXF1ZXN0KCk7CisgICAg
aWYgKCF4bWxIdHRwUmVxdWVzdCkKKyAgICAgICAgcmV0dXJuIDA7CisgICAgcmV0dXJuIHhtbEh0
dHBSZXF1ZXN0LT5hc3NvY2lhdGVkRnJhbWUoKTsKK30KKwogdm9pZCBYTUxIdHRwUmVxdWVzdFVw
bG9hZDo6YWRkRXZlbnRMaXN0ZW5lcihjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFz
c1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyLCBib29sKQogewogICAgIEV2ZW50
TGlzdGVuZXJzTWFwOjppdGVyYXRvciBpdGVyID0gbV9ldmVudExpc3RlbmVycy5maW5kKGV2ZW50
VHlwZS5pbXBsKCkpOwpJbmRleDogeG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0geG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmgJKHJldmlzaW9uIDM3MTIxKQorKysgeG1s
L1hNTEh0dHBSZXF1ZXN0VXBsb2FkLmgJKHdvcmtpbmcgY29weSkKQEAgLTM3LDYgKzM3LDcgQEAK
IG5hbWVzcGFjZSBXZWJDb3JlIHsKIAogICAgIGNsYXNzIEF0b21pY1N0cmluZ0ltcGw7CisgICAg
Y2xhc3MgRnJhbWU7CiAgICAgY2xhc3MgWE1MSHR0cFJlcXVlc3Q7CiAKICAgICBjbGFzcyBYTUxI
dHRwUmVxdWVzdFVwbG9hZCA6IHB1YmxpYyBSZWZDb3VudGVkPFhNTEh0dHBSZXF1ZXN0VXBsb2Fk
PiwgcHVibGljIEV2ZW50VGFyZ2V0IHsKQEAgLTUxLDI2ICs1MiwyOCBAQCBuYW1lc3BhY2UgV2Vi
Q29yZSB7CiAgICAgICAgIFhNTEh0dHBSZXF1ZXN0KiBhc3NvY2lhdGVkWE1MSHR0cFJlcXVlc3Qo
KSBjb25zdCB7IHJldHVybiBtX3htbEh0dHBSZXF1ZXN0OyB9CiAgICAgICAgIHZvaWQgZGlzY29u
bmVjdFhNTEh0dHBSZXF1ZXN0KCkgeyBtX3htbEh0dHBSZXF1ZXN0ID0gMDsgfQogCisgICAgICAg
IEZyYW1lKiBhc3NvY2lhdGVkRnJhbWUoKSBjb25zdDsKKwogICAgICAgICB2b2lkIGRpc3BhdGNo
QWJvcnRFdmVudCgpOwogICAgICAgICB2b2lkIGRpc3BhdGNoRXJyb3JFdmVudCgpOwogICAgICAg
ICB2b2lkIGRpc3BhdGNoTG9hZEV2ZW50KCk7CiAgICAgICAgIHZvaWQgZGlzcGF0Y2hMb2FkU3Rh
cnRFdmVudCgpOwogICAgICAgICB2b2lkIGRpc3BhdGNoUHJvZ3Jlc3NFdmVudChsb25nIGxvbmcg
Ynl0ZXNTZW50LCBsb25nIGxvbmcgdG90YWxCeXRlc1RvQmVTZW50KTsKIAotICAgICAgICB2b2lk
IHNldE9uQWJvcnRMaXN0ZW5lcihQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVu
ZXIpIHsgbV9vbkFib3J0TGlzdGVuZXIgPSBldmVudExpc3RlbmVyOyB9Ci0gICAgICAgIEV2ZW50
TGlzdGVuZXIqIG9uQWJvcnRMaXN0ZW5lcigpIGNvbnN0IHsgcmV0dXJuIG1fb25BYm9ydExpc3Rl
bmVyLmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0T25hYm9ydChQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbkFib3J0TGlzdGVuZXIgPSBldmVudExpc3RlbmVy
OyB9CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9uYWJvcnQoKSBjb25zdCB7IHJldHVybiBtX29u
QWJvcnRMaXN0ZW5lci5nZXQoKTsgfQogCi0gICAgICAgIHZvaWQgc2V0T25FcnJvckxpc3RlbmVy
KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uRXJyb3JMaXN0
ZW5lciA9IGV2ZW50TGlzdGVuZXI7IH0KLSAgICAgICAgRXZlbnRMaXN0ZW5lciogb25FcnJvckxp
c3RlbmVyKCkgY29uc3QgeyByZXR1cm4gbV9vbkVycm9yTGlzdGVuZXIuZ2V0KCk7IH0KKyAgICAg
ICAgdm9pZCBzZXRPbmVycm9yKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5l
cikgeyBtX29uRXJyb3JMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICAgICAgRXZlbnRM
aXN0ZW5lciogb25lcnJvcigpIGNvbnN0IHsgcmV0dXJuIG1fb25FcnJvckxpc3RlbmVyLmdldCgp
OyB9CiAKLSAgICAgICAgdm9pZCBzZXRPbkxvYWRMaXN0ZW5lcihQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbkxvYWRMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7
IH0KLSAgICAgICAgRXZlbnRMaXN0ZW5lciogb25Mb2FkTGlzdGVuZXIoKSBjb25zdCB7IHJldHVy
biBtX29uTG9hZExpc3RlbmVyLmdldCgpOyB9CisgICAgICAgIHZvaWQgc2V0T25sb2FkKFBhc3NS
ZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uTG9hZExpc3RlbmVyID0g
ZXZlbnRMaXN0ZW5lcjsgfQorICAgICAgICBFdmVudExpc3RlbmVyKiBvbmxvYWQoKSBjb25zdCB7
IHJldHVybiBtX29uTG9hZExpc3RlbmVyLmdldCgpOyB9CiAKLSAgICAgICAgdm9pZCBzZXRPbkxv
YWRTdGFydExpc3RlbmVyKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikg
eyBtX29uTG9hZFN0YXJ0TGlzdGVuZXIgPSBldmVudExpc3RlbmVyOyB9Ci0gICAgICAgIEV2ZW50
TGlzdGVuZXIqIG9uTG9hZFN0YXJ0TGlzdGVuZXIoKSBjb25zdCB7IHJldHVybiBtX29uTG9hZFN0
YXJ0TGlzdGVuZXIuZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRPbmxvYWRzdGFydChQYXNzUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpIHsgbV9vbkxvYWRTdGFydExpc3RlbmVy
ID0gZXZlbnRMaXN0ZW5lcjsgfQorICAgICAgICBFdmVudExpc3RlbmVyKiBvbmxvYWRzdGFydCgp
IGNvbnN0IHsgcmV0dXJuIG1fb25Mb2FkU3RhcnRMaXN0ZW5lci5nZXQoKTsgfQogCi0gICAgICAg
IHZvaWQgc2V0T25Qcm9ncmVzc0xpc3RlbmVyKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZl
bnRMaXN0ZW5lcikgeyBtX29uUHJvZ3Jlc3NMaXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7IH0KLSAg
ICAgICAgRXZlbnRMaXN0ZW5lciogb25Qcm9ncmVzc0xpc3RlbmVyKCkgY29uc3QgeyByZXR1cm4g
bV9vblByb2dyZXNzTGlzdGVuZXIuZ2V0KCk7IH0KKyAgICAgICAgdm9pZCBzZXRPbnByb2dyZXNz
KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikgeyBtX29uUHJvZ3Jlc3NM
aXN0ZW5lciA9IGV2ZW50TGlzdGVuZXI7IH0KKyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25wcm9n
cmVzcygpIGNvbnN0IHsgcmV0dXJuIG1fb25Qcm9ncmVzc0xpc3RlbmVyLmdldCgpOyB9CiAKICAg
ICAgICAgdHlwZWRlZiBWZWN0b3I8UmVmUHRyPEV2ZW50TGlzdGVuZXI+ID4gTGlzdGVuZXJWZWN0
b3I7CiAgICAgICAgIHR5cGVkZWYgSGFzaE1hcDxBdG9taWNTdHJpbmdJbXBsKiwgTGlzdGVuZXJW
ZWN0b3I+IEV2ZW50TGlzdGVuZXJzTWFwOwpJbmRleDogeG1sL1hNTEh0dHBSZXF1ZXN0VXBsb2Fk
LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09Ci0tLSB4bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuaWRsCShyZXZpc2lv
biAzNzEyMSkKKysrIHhtbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTQ3LDcgKzQ3LDcgQEAgbW9kdWxlIHhtbCB7CiAgICAgICAgIFtDdXN0b21dIHZvaWQgcmVt
b3ZlRXZlbnRMaXN0ZW5lcihpbiBET01TdHJpbmcgdHlwZSwgCiAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICBpbiBFdmVudExpc3RlbmVyIGxpc3RlbmVyLCAKICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGluIGJvb2xlYW4gdXNlQ2FwdHVy
ZSk7Ci0gICAgICAgIFtDdXN0b21dIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQp
CisgICAgICAgIGJvb2xlYW4gZGlzcGF0Y2hFdmVudChpbiBFdmVudCBldnQpCiAgICAgICAgICAg
ICByYWlzZXMoRXZlbnRFeGNlcHRpb24pOwogICAgIH07CiAK
</data>

          </attachment>
          <attachment
              isobsolete="0"
              ispatch="1"
              isprivate="0"
          >
            <attachid>23968</attachid>
            <date>2008-09-30 23:54:40 -0700</date>
            <delta_ts>2008-10-01 00:10:26 -0700</delta_ts>
            <desc>Patch 3 - Generation </desc>
            <filename>eventListener.diff</filename>
            <type>text/plain</type>
            <size>67070</size>
            <attacher name="Sam Weinig">sam</attacher>
            
              <data encoding="base64">SW5kZXg6IENoYW5nZUxvZwo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBDaGFuZ2VMb2cJKHJldmlzaW9uIDM3MTM5
KQorKysgQ2hhbmdlTG9nCSh3b3JraW5nIGNvcHkpCkBAIC0xLDMgKzEsMzYgQEAKKzIwMDgtMDkt
MzAgIFNhbSBXZWluaWcgIDxzYW1Ad2Via2l0Lm9yZz4KKworICAgICAgICBSZXZpZXdlZCBieSBO
T0JPRFkgKE9PUFMhKS4KKworICAgICAgICBGaW5hbCBwYXRjaCBmb3IgaHR0cHM6Ly9idWdzLndl
YmtpdC5vcmcvc2hvd19idWcuY2dpP2lkPTIxMTIyCisgICAgICAgIEF1dG9nZW5lcmF0ZSBKUyBl
dmVudCBsaXN0ZW5lcnMKKworICAgICAgICAtIEdlbmVyYXRlIGdldHRpbmcvc2V0dGluZyBvZiBF
dmVudExpc3RlbmVycy4KKworICAgICAgICAtIEFkZGluZyBhbiBuZXcgbmFtZWQgRXZlbnRMaXN0
ZW5lciBub3cgaGFzIHRoZSBzYW1lIHByb2Nlc3MgYXMgYWRkaW5nIGFueSBvdGhlciBET00KKyAg
ICAgICAgICBhdHRyaWJ1dGUuIChBZGQgYSBtZXRob2Qgd2l0aCB0aGUgc2FtZSBuYW1lIGluIHRo
ZSBjKysgZmlsZSkuCisKKyAgICAgICAgKiBiaW5kaW5ncy9qcy9KU0RPTUFwcGxpY2F0aW9uQ2Fj
aGVDdXN0b20uY3BwOiBSZW1vdmUgY3VzdG9tIG1ldGhvZHMuCisgICAgICAgICogYmluZGluZ3Mv
anMvSlNET01XaW5kb3dDdXN0b20uY3BwOiBkaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U0V2ZW50VGFyZ2V0Tm9kZUN1c3RvbS5jcHA6IGRpdHRvLgorICAgICAgICAqIGJpbmRpbmdzL2pz
L0pTTWVzc2FnZVBvcnRDdXN0b20uY3BwOiBkaXR0by4KKyAgICAgICAgKiBiaW5kaW5ncy9qcy9K
U1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcDogZGl0dG8uCisgICAgICAgICogYmluZGluZ3MvanMv
SlNYTUxIdHRwUmVxdWVzdFVwbG9hZEN1c3RvbS5jcHA6IGRpdHRvLgorICAgICAgICAqIGJpbmRp
bmdzL3NjcmlwdHMvQ29kZUdlbmVyYXRvckpTLnBtOiBBZGQgY29kZSB0byBnZW5lcmF0ZSBFdmVu
dExpc3RlbmVyCisgICAgICAgIGdldHRlci9zZXR0ZXJzCisgICAgICAgICogZG9tL0V2ZW50VGFy
Z2V0Tm9kZS5jcHA6IEFkZCBnZXR0ZXIvc2V0dGVycyBmb3IgbmFtZWQgRXZlbnRMaXN0ZW5lci4K
KyAgICAgICAgKiBkb20vRXZlbnRUYXJnZXROb2RlLmg6IGRpdHRvLgorICAgICAgICAqIGRvbS9F
dmVudFRhcmdldE5vZGUuaWRsOiBNYXJrIEV2ZW50TGlzdGVuZXJzIGFzIFByb3RlY3RlZCBzbyB0
aGF0IHRoZSBjb2RlZ2VuZXJhdG9yCisgICAgICAgIHdpbGwgdXNlIEpTRXZlbnRMaXN0ZXJuZXIg
aW5zdGVhZCBvZiBKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lci4KKyAgICAgICAgKiBkb20vTWVz
c2FnZVBvcnQuaWRsOiBSZW1vdmUgY3VzdG9tIGF0dHJpYnV0ZXMuCisgICAgICAgICogbG9hZGVy
L2FwcGNhY2hlL0RPTUFwcGxpY2F0aW9uQ2FjaGUuaWRsOiBkaXR0by4KKyAgICAgICAgKiBwYWdl
L0RPTVdpbmRvdy5jcHA6IEFkZCBnZXR0ZXIvc2V0dGVycyBmb3IgbmFtZWQgRXZlbnRMaXN0ZW5l
cgorICAgICAgICAqIHBhZ2UvRE9NV2luZG93Lmg6IGRpdHRvLgorICAgICAgICAqIHBhZ2UvRE9N
V2luZG93LmlkbDogTWFyayBFdmVudExpc3RlbmVycyBhcyBQcm90ZWN0ZWQgc28gdGhhdCB0aGUg
Y29kZWdlbmVyYXRvcgorICAgICAgICB3aWxsIHVzZSBKU0V2ZW50TGlzdGVybmVyIGluc3RlYWQg
b2YgSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIuCisgICAgICAgICogeG1sL1hNTEh0dHBSZXF1
ZXN0LmlkbDogUmVtb3ZlIGN1c3RvbSBhdHRyaWJ1dGVzLgorICAgICAgICAqIHhtbC9YTUxIdHRw
UmVxdWVzdFVwbG9hZC5pZGw6IGRpdHRvLgorCiAyMDA4LTA5LTMwICBEYW4gQmVybnN0ZWluICA8
bWl0ekBhcHBsZS5jb20+CiAKICAgICAgICAgUmV2aWV3ZWQgYnkgRGF2ZSBIeWF0dC4KSW5kZXg6
IGJpbmRpbmdzL2pzL0pTRE9NQXBwbGljYXRpb25DYWNoZUN1c3RvbS5jcHAKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gYmluZGluZ3MvanMvSlNET01BcHBsaWNhdGlvbkNhY2hlQ3VzdG9tLmNwcAkocmV2aXNpb24g
MzcxMzkpCisrKyBiaW5kaW5ncy9qcy9KU0RPTUFwcGxpY2F0aW9uQ2FjaGVDdXN0b20uY3BwCSh3
b3JraW5nIGNvcHkpCkBAIC00NSwxMCArNDUsMTAgQEAgbmFtZXNwYWNlIFdlYkNvcmUgewogdm9p
ZCBKU0RPTUFwcGxpY2F0aW9uQ2FjaGU6Om1hcmsoKQogewogICAgIERPTU9iamVjdDo6bWFyaygp
OwotIAorCiAgICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0
YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4obV9pbXBsLT5vbmNoZWNraW5n
KCkpKQogICAgICAgICBsaXN0ZW5lci0+bWFyaygpOwotICAgICAgICAKKwogICAgIGlmIChKU1Vu
cHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVj
dGVkRXZlbnRMaXN0ZW5lcio+KG1faW1wbC0+b25lcnJvcigpKSkKICAgICAgICAgbGlzdGVuZXIt
Pm1hcmsoKTsKIApAQCAtNjYsNyArNjYsNyBAQCB2b2lkIEpTRE9NQXBwbGljYXRpb25DYWNoZTo6
bWFyaygpCiAKICAgICBpZiAoSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0g
c3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqPihtX2ltcGwtPm9uY2FjaGVk
KCkpKQogICAgICAgICBsaXN0ZW5lci0+bWFyaygpOwotICAgIAorCiAgICAgdHlwZWRlZiBET01B
cHBsaWNhdGlvbkNhY2hlOjpFdmVudExpc3RlbmVyc01hcCBFdmVudExpc3RlbmVyc01hcDsKICAg
ICB0eXBlZGVmIERPTUFwcGxpY2F0aW9uQ2FjaGU6Okxpc3RlbmVyVmVjdG9yIExpc3RlbmVyVmVj
dG9yOwogICAgIEV2ZW50TGlzdGVuZXJzTWFwJiBldmVudExpc3RlbmVycyA9IG1faW1wbC0+ZXZl
bnRMaXN0ZW5lcnMoKTsKQEAgLTkwLDcgKzkwLDcgQEAgSlNWYWx1ZSogSlNET01BcHBsaWNhdGlv
bkNhY2hlOjphZGQoRXhlYwogICAgIHNldERPTUV4Y2VwdGlvbihleGVjLCBlYyk7CiAgICAgcmV0
dXJuIGpzVW5kZWZpbmVkKCk7CiB9Ci0gICAgCisKIEpTVmFsdWUqIEpTRE9NQXBwbGljYXRpb25D
YWNoZTo6cmVtb3ZlKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKICAg
ICBGcmFtZSogZnJhbWUgPSBhc0pTRE9NV2luZG93KGV4ZWMtPmR5bmFtaWNHbG9iYWxPYmplY3Qo
KSktPmltcGwoKS0+ZnJhbWUoKTsKQEAgLTEwMyw3ICsxMDMsNyBAQCBKU1ZhbHVlKiBKU0RPTUFw
cGxpY2F0aW9uQ2FjaGU6OnJlbW92ZShFCiAgICAgc2V0RE9NRXhjZXB0aW9uKGV4ZWMsIGVjKTsK
ICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKIH0KLSAgICAKKwogSlNWYWx1ZSogSlNET01BcHBs
aWNhdGlvbkNhY2hlOjphZGRFdmVudExpc3RlbmVyKEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXJn
TGlzdCYgYXJncykKIHsKICAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCktPmFzc29jaWF0ZWRGcmFt
ZSgpOwpAQCAtMTI2LDExOSArMTI2LDYgQEAgSlNWYWx1ZSogSlNET01BcHBsaWNhdGlvbkNhY2hl
OjpyZW1vdmVFdgogICAgICAgICByZXR1cm4ganNVbmRlZmluZWQoKTsKICAgICBpbXBsKCktPnJl
bW92ZUV2ZW50TGlzdGVuZXIoYXJncy5hdChleGVjLCAwKS0+dG9TdHJpbmcoZXhlYyksIGxpc3Rl
bmVyLCBhcmdzLmF0KGV4ZWMsIDIpLT50b0Jvb2xlYW4oZXhlYykpOwogICAgIHJldHVybiBqc1Vu
ZGVmaW5lZCgpOwotICAgIAotfQotICAgIAotdm9pZCBKU0RPTUFwcGxpY2F0aW9uQ2FjaGU6OnNl
dE9uY2hlY2tpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlKiB2YWx1ZSkKLXsKLSAgICBGcmFt
ZSogZnJhbWUgPSBpbXBsKCktPmFzc29jaWF0ZWRGcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0g
ICAgICAgIHJldHVybjsKLSAgICBpbXBsKCktPnNldE9uY2hlY2tpbmcodG9KU0RPTVdpbmRvdyhm
cmFtZSktPmZpbmRPckNyZWF0ZUpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKGV4ZWMsIHZhbHVl
LCB0cnVlKSk7Ci19Ci0KLUpTVmFsdWUqIEpTRE9NQXBwbGljYXRpb25DYWNoZTo6b25jaGVja2lu
ZyhFeGVjU3RhdGUqKSBjb25zdAotewotICAgIGlmIChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5l
ciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+KGlt
cGwoKS0+b25jaGVja2luZygpKSkKLSAgICAgICAgaWYgKEpTT2JqZWN0KiBsaXN0ZW5lck9iaiA9
IGxpc3RlbmVyLT5saXN0ZW5lck9iaigpKQotICAgICAgICAgICAgcmV0dXJuIGxpc3RlbmVyT2Jq
OwotICAgIHJldHVybiBqc051bGwoKTsKLX0KLQotdm9pZCBKU0RPTUFwcGxpY2F0aW9uQ2FjaGU6
OnNldE9uZXJyb3IoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlKiB2YWx1ZSkKLXsKLSAgICBGcmFt
ZSogZnJhbWUgPSBpbXBsKCktPmFzc29jaWF0ZWRGcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0g
ICAgICAgIHJldHVybjsKLSAgICBpbXBsKCktPnNldE9uZXJyb3IodG9KU0RPTVdpbmRvdyhmcmFt
ZSktPmZpbmRPckNyZWF0ZUpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKGV4ZWMsIHZhbHVlLCB0
cnVlKSk7Ci19Ci0KLUpTVmFsdWUqIEpTRE9NQXBwbGljYXRpb25DYWNoZTo6b25lcnJvcihFeGVj
U3RhdGUqKSBjb25zdAotewotICAgIGlmIChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogbGlz
dGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+KGltcGwoKS0+
b25lcnJvcigpKSkKLSAgICAgICAgaWYgKEpTT2JqZWN0KiBsaXN0ZW5lck9iaiA9IGxpc3RlbmVy
LT5saXN0ZW5lck9iaigpKQotICAgICAgICAgICAgcmV0dXJuIGxpc3RlbmVyT2JqOwotICAgIHJl
dHVybiBqc051bGwoKTsKLX0KLQotdm9pZCBKU0RPTUFwcGxpY2F0aW9uQ2FjaGU6OnNldE9ubm91
cGRhdGUoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlKiB2YWx1ZSkKLXsKLSAgICBGcmFtZSogZnJh
bWUgPSBpbXBsKCktPmFzc29jaWF0ZWRGcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0gICAgICAg
IHJldHVybjsKLSAgICBpbXBsKCktPnNldE9ubm91cGRhdGUodG9KU0RPTVdpbmRvdyhmcmFtZSkt
PmZpbmRPckNyZWF0ZUpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKGV4ZWMsIHZhbHVlLCB0cnVl
KSk7Ci19Ci0KLUpTVmFsdWUqIEpTRE9NQXBwbGljYXRpb25DYWNoZTo6b25ub3VwZGF0ZShFeGVj
U3RhdGUqKSBjb25zdAotewotICAgIGlmIChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogbGlz
dGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+KGltcGwoKS0+
b25ub3VwZGF0ZSgpKSkKLSAgICAgICAgaWYgKEpTT2JqZWN0KiBsaXN0ZW5lck9iaiA9IGxpc3Rl
bmVyLT5saXN0ZW5lck9iaigpKQotICAgICAgICAgICAgcmV0dXJuIGxpc3RlbmVyT2JqOwotICAg
IHJldHVybiBqc051bGwoKTsKLX0KLQotdm9pZCBKU0RPTUFwcGxpY2F0aW9uQ2FjaGU6OnNldE9u
ZG93bmxvYWRpbmcoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlKiB2YWx1ZSkKLXsKLSAgICBGcmFt
ZSogZnJhbWUgPSBpbXBsKCktPmFzc29jaWF0ZWRGcmFtZSgpOwotICAgIGlmICghZnJhbWUpCi0g
ICAgICAgIHJldHVybjsKLSAgICBpbXBsKCktPnNldE9uZG93bmxvYWRpbmcodG9KU0RPTVdpbmRv
dyhmcmFtZSktPmZpbmRPckNyZWF0ZUpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKGV4ZWMsIHZh
bHVlLCB0cnVlKSk7Ci19Ci0KLUpTVmFsdWUqIEpTRE9NQXBwbGljYXRpb25DYWNoZTo6b25kb3du
bG9hZGluZyhFeGVjU3RhdGUqKSBjb25zdAotewotICAgIGlmIChKU1VucHJvdGVjdGVkRXZlbnRM
aXN0ZW5lciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5l
cio+KGltcGwoKS0+b25kb3dubG9hZGluZygpKSkKLSAgICAgICAgaWYgKEpTT2JqZWN0KiBsaXN0
ZW5lck9iaiA9IGxpc3RlbmVyLT5saXN0ZW5lck9iaigpKQotICAgICAgICAgICAgcmV0dXJuIGxp
c3RlbmVyT2JqOwotICAgIHJldHVybiBqc051bGwoKTsKLX0KLQotdm9pZCBKU0RPTUFwcGxpY2F0
aW9uQ2FjaGU6OnNldE9ucHJvZ3Jlc3MoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlKiB2YWx1ZSkK
LXsKLSAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCktPmFzc29jaWF0ZWRGcmFtZSgpOwotICAgIGlm
ICghZnJhbWUpCi0gICAgICAgIHJldHVybjsKLSAgICBpbXBsKCktPnNldE9ucHJvZ3Jlc3ModG9K
U0RPTVdpbmRvdyhmcmFtZSktPmZpbmRPckNyZWF0ZUpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVy
KGV4ZWMsIHZhbHVlLCB0cnVlKSk7Ci19Ci0KLUpTVmFsdWUqIEpTRE9NQXBwbGljYXRpb25DYWNo
ZTo6b25wcm9ncmVzcyhFeGVjU3RhdGUqKSBjb25zdAotewotICAgIGlmIChKU1VucHJvdGVjdGVk
RXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRM
aXN0ZW5lcio+KGltcGwoKS0+b25wcm9ncmVzcygpKSkKLSAgICAgICAgaWYgKEpTT2JqZWN0KiBs
aXN0ZW5lck9iaiA9IGxpc3RlbmVyLT5saXN0ZW5lck9iaigpKQotICAgICAgICAgICAgcmV0dXJu
IGxpc3RlbmVyT2JqOwotICAgIHJldHVybiBqc051bGwoKTsKLX0KLQotdm9pZCBKU0RPTUFwcGxp
Y2F0aW9uQ2FjaGU6OnNldE9udXBkYXRlcmVhZHkoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlKiB2
YWx1ZSkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCktPmFzc29jaWF0ZWRGcmFtZSgpOwot
ICAgIGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybjsKLSAgICBpbXBsKCktPnNldE9udXBkYXRl
cmVhZHkodG9KU0RPTVdpbmRvdyhmcmFtZSktPmZpbmRPckNyZWF0ZUpTVW5wcm90ZWN0ZWRFdmVu
dExpc3RlbmVyKGV4ZWMsIHZhbHVlLCB0cnVlKSk7Ci19Ci0KLUpTVmFsdWUqIEpTRE9NQXBwbGlj
YXRpb25DYWNoZTo6b251cGRhdGVyZWFkeShFeGVjU3RhdGUqKSBjb25zdAotewotICAgIGlmIChK
U1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJv
dGVjdGVkRXZlbnRMaXN0ZW5lcio+KGltcGwoKS0+b251cGRhdGVyZWFkeSgpKSkKLSAgICAgICAg
aWYgKEpTT2JqZWN0KiBsaXN0ZW5lck9iaiA9IGxpc3RlbmVyLT5saXN0ZW5lck9iaigpKQotICAg
ICAgICAgICAgcmV0dXJuIGxpc3RlbmVyT2JqOwotICAgIHJldHVybiBqc051bGwoKTsKLX0KLQot
dm9pZCBKU0RPTUFwcGxpY2F0aW9uQ2FjaGU6OnNldE9uY2FjaGVkKEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSogdmFsdWUpCi17Ci0gICAgRnJhbWUqIGZyYW1lID0gaW1wbCgpLT5hc3NvY2lhdGVk
RnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLT5z
ZXRPbmNhY2hlZCh0b0pTRE9NV2luZG93KGZyYW1lKS0+ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3Rl
ZEV2ZW50TGlzdGVuZXIoZXhlYywgdmFsdWUsIHRydWUpKTsKLX0KLQotSlNWYWx1ZSogSlNET01B
cHBsaWNhdGlvbkNhY2hlOjpvbmNhY2hlZChFeGVjU3RhdGUqKSBjb25zdAotewotICAgIGlmIChK
U1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJv
dGVjdGVkRXZlbnRMaXN0ZW5lcio+KGltcGwoKS0+b25jYWNoZWQoKSkpCi0gICAgICAgIGlmIChK
U09iamVjdCogbGlzdGVuZXJPYmogPSBsaXN0ZW5lci0+bGlzdGVuZXJPYmooKSkKLSAgICAgICAg
ICAgIHJldHVybiBsaXN0ZW5lck9iajsKLSAgICByZXR1cm4ganNOdWxsKCk7CiB9CiAKIH0gLy8g
bmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IGJpbmRpbmdzL2pzL0pTRE9NV2luZG93Q3VzdG9tLmNw
cAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qcy9KU0RPTVdpbmRvd0N1c3RvbS5jcHAJKHJldmlz
aW9uIDM3MTM5KQorKysgYmluZGluZ3MvanMvSlNET01XaW5kb3dDdXN0b20uY3BwCSh3b3JraW5n
IGNvcHkpCkBAIC0yMyw3ICsyMyw2IEBACiAjaW5jbHVkZSAiQXRvbWljU3RyaW5nLmgiCiAjaW5j
bHVkZSAiRE9NV2luZG93LmgiCiAjaW5jbHVkZSAiRG9jdW1lbnQuaCIKLSNpbmNsdWRlICJFdmVu
dE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5oIgogI2luY2x1ZGUgIkZyYW1lLmgi
CiAjaW5jbHVkZSAiRnJhbWVMb2FkZXIuaCIKQEAgLTQxLDggKzQwLDYgQEAgdXNpbmcgbmFtZXNw
YWNlIEpTQzsKIAogbmFtZXNwYWNlIFdlYkNvcmUgewogCi11c2luZyBuYW1lc3BhY2UgRXZlbnRO
YW1lczsKLQogc3RhdGljIHZvaWQgbWFya0RPTU9iamVjdFdyYXBwZXIodm9pZCogb2JqZWN0KQog
ewogICAgIGlmICghb2JqZWN0KQpAQCAtMTcyLDQ2ICsxNjksNiBAQCB2b2lkIEpTRE9NV2luZG93
OjpzZXRMb2NhdGlvbihFeGVjU3RhdGUqCiAgICAgfQogfQogCi1KU1ZhbHVlKiBKU0RPTVdpbmRv
dzo6b253ZWJraXRhbmltYXRpb25zdGFydChFeGVjU3RhdGUqIGV4ZWMpIGNvbnN0Ci17Ci0gICAg
cmV0dXJuIGdldExpc3RlbmVyKGV4ZWMsIHdlYmtpdEFuaW1hdGlvblN0YXJ0RXZlbnQpOwotfQot
Ci12b2lkIEpTRE9NV2luZG93OjpzZXRPbndlYmtpdGFuaW1hdGlvbnN0YXJ0KEV4ZWNTdGF0ZSog
ZXhlYywgSlNWYWx1ZSogdmFsdWUpCi17Ci0gICAgc2V0TGlzdGVuZXIoZXhlYywgd2Via2l0QW5p
bWF0aW9uU3RhcnRFdmVudCwgdmFsdWUpOwotfQotCi1KU1ZhbHVlKiBKU0RPTVdpbmRvdzo6b253
ZWJraXRhbmltYXRpb25pdGVyYXRpb24oRXhlY1N0YXRlKiBleGVjKSBjb25zdAotewotICAgIHJl
dHVybiBnZXRMaXN0ZW5lcihleGVjLCB3ZWJraXRBbmltYXRpb25JdGVyYXRpb25FdmVudCk7Ci19
Ci0KLXZvaWQgSlNET01XaW5kb3c6OnNldE9ud2Via2l0YW5pbWF0aW9uaXRlcmF0aW9uKEV4ZWNT
dGF0ZSogZXhlYywgSlNWYWx1ZSogdmFsdWUpCi17Ci0gICAgc2V0TGlzdGVuZXIoZXhlYywgd2Vi
a2l0QW5pbWF0aW9uSXRlcmF0aW9uRXZlbnQsIHZhbHVlKTsKLX0KLQotSlNWYWx1ZSogSlNET01X
aW5kb3c6Om9ud2Via2l0YW5pbWF0aW9uZW5kKEV4ZWNTdGF0ZSogZXhlYykgY29uc3QKLXsKLSAg
ICByZXR1cm4gZ2V0TGlzdGVuZXIoZXhlYywgd2Via2l0QW5pbWF0aW9uRW5kRXZlbnQpOwotfQot
Ci12b2lkIEpTRE9NV2luZG93OjpzZXRPbndlYmtpdGFuaW1hdGlvbmVuZChFeGVjU3RhdGUqIGV4
ZWMsIEpTVmFsdWUqIHZhbHVlKQotewotICAgIHNldExpc3RlbmVyKGV4ZWMsIHdlYmtpdEFuaW1h
dGlvbkVuZEV2ZW50LCB2YWx1ZSk7Ci19Ci0KLUpTVmFsdWUqIEpTRE9NV2luZG93OjpvbndlYmtp
dHRyYW5zaXRpb25lbmQoRXhlY1N0YXRlKiBleGVjKSBjb25zdAotewotICAgIHJldHVybiBnZXRM
aXN0ZW5lcihleGVjLCB3ZWJraXRUcmFuc2l0aW9uRW5kRXZlbnQpOwotfQotCi12b2lkIEpTRE9N
V2luZG93OjpzZXRPbndlYmtpdHRyYW5zaXRpb25lbmQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVl
KiB2YWx1ZSkKLXsKLSAgICBzZXRMaXN0ZW5lcihleGVjLCB3ZWJraXRUcmFuc2l0aW9uRW5kRXZl
bnQsIHZhbHVlKTsKLX0KLQogSlNWYWx1ZSogSlNET01XaW5kb3c6OnBvc3RNZXNzYWdlKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKICAgICBET01XaW5kb3cqIHdpbmRv
dyA9IGltcGwoKTsKQEAgLTI2MywyOSArMjIwLDYgQEAgSlNWYWx1ZSogSlNET01XaW5kb3c6OnJl
bW92ZUV2ZW50TGlzdGVuZQogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCi12b2lkIEpT
RE9NV2luZG93OjpzZXRMaXN0ZW5lcihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEF0b21pY1N0cmlu
ZyYgZXZlbnRUeXBlLCBKU1ZhbHVlKiBmdW5jKQotewotICAgIEFTU0VSVChpbXBsKCktPmZyYW1l
KCkpOwotICAgIERvY3VtZW50KiBkb2MgPSBpbXBsKCktPmZyYW1lKCktPmRvY3VtZW50KCk7Ci0g
ICAgaWYgKCFkb2MpCi0gICAgICAgIHJldHVybjsKLQotICAgIGRvYy0+c2V0V2luZG93RXZlbnRM
aXN0ZW5lckZvclR5cGUoZXZlbnRUeXBlLCBmaW5kT3JDcmVhdGVKU0V2ZW50TGlzdGVuZXIoZXhl
YywgZnVuYywgdHJ1ZSkpOwotfQotCi1KU1ZhbHVlKiBKU0RPTVdpbmRvdzo6Z2V0TGlzdGVuZXIo
RXhlY1N0YXRlKiBleGVjLCBjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29uc3QKLXsK
LSAgICBBU1NFUlQoaW1wbCgpLT5mcmFtZSgpKTsKLSAgICBEb2N1bWVudCogZG9jID0gaW1wbCgp
LT5mcmFtZSgpLT5kb2N1bWVudCgpOwotICAgIGlmICghZG9jKQotICAgICAgICByZXR1cm4ganNV
bmRlZmluZWQoKTsKLQotICAgIEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gZG9jLT53aW5kb3dF
dmVudExpc3RlbmVyRm9yVHlwZShldmVudFR5cGUpOwotICAgIGlmIChsaXN0ZW5lciAmJiBzdGF0
aWNfY2FzdDxKU0V2ZW50TGlzdGVuZXIqPihsaXN0ZW5lciktPmxpc3RlbmVyT2JqKCkpCi0gICAg
ICAgIHJldHVybiBzdGF0aWNfY2FzdDxKU0V2ZW50TGlzdGVuZXIqPihsaXN0ZW5lciktPmxpc3Rl
bmVyT2JqKCk7Ci0gICAgcmV0dXJuIGpzTnVsbCgpOwotfQotCiBET01XaW5kb3cqIHRvRE9NV2lu
ZG93KEpTVmFsdWUqIHZhbCkKIHsKICAgICBpZiAodmFsLT5pc09iamVjdCgmSlNET01XaW5kb3c6
OnNfaW5mbykpCkluZGV4OiBiaW5kaW5ncy9qcy9KU0V2ZW50VGFyZ2V0Tm9kZUN1c3RvbS5jcHAK
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PQotLS0gYmluZGluZ3MvanMvSlNFdmVudFRhcmdldE5vZGVDdXN0b20uY3BwCShy
ZXZpc2lvbiAzNzEzOSkKKysrIGJpbmRpbmdzL2pzL0pTRXZlbnRUYXJnZXROb2RlQ3VzdG9tLmNw
cAkod29ya2luZyBjb3B5KQpAQCAtNjQsMjQgKzY0LDYgQEAgSlNWYWx1ZSogSlNFdmVudFRhcmdl
dE5vZGU6OnJlbW92ZUV2ZW50TAogICAgIHJldHVybiBqc1VuZGVmaW5lZCgpOwogfQogCi1KU1Zh
bHVlKiBKU0V2ZW50VGFyZ2V0Tm9kZTo6Z2V0TGlzdGVuZXIoRXhlY1N0YXRlKiBleGVjLCBjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29uc3QKLXsKLSAgICBFdmVudExpc3RlbmVyKiBs
aXN0ZW5lciA9IGltcGwoKS0+ZXZlbnRMaXN0ZW5lckZvclR5cGUoZXZlbnRUeXBlKTsKLSAgICBK
U0V2ZW50TGlzdGVuZXIqIGpzTGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU0V2ZW50TGlzdGVuZXIq
PihsaXN0ZW5lcik7Ci0gICAgaWYgKGpzTGlzdGVuZXIgJiYganNMaXN0ZW5lci0+bGlzdGVuZXJP
YmooKSkKLSAgICAgICAgcmV0dXJuIGpzTGlzdGVuZXItPmxpc3RlbmVyT2JqKCk7Ci0KLSAgICBy
ZXR1cm4ganNOdWxsKCk7Ci19Ci0KLXZvaWQgSlNFdmVudFRhcmdldE5vZGU6OnNldExpc3RlbmVy
KEV4ZWNTdGF0ZSogZXhlYywgY29uc3QgQXRvbWljU3RyaW5nJiBldmVudFR5cGUsIEpTVmFsdWUq
IGZ1bmMpCi17Ci0gICAgRnJhbWUqIGZyYW1lID0gaW1wbCgpLT5hc3NvY2lhdGVkRnJhbWUoKTsK
LSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLT5zZXRFdmVudExp
c3RlbmVyRm9yVHlwZShldmVudFR5cGUsIHRvSlNET01XaW5kb3coZnJhbWUpLT5maW5kT3JDcmVh
dGVKU0V2ZW50TGlzdGVuZXIoZXhlYywgZnVuYywgdHJ1ZSkpOwotfQotCiB2b2lkIEpTRXZlbnRU
YXJnZXROb2RlOjpwdXNoRXZlbnRIYW5kbGVyU2NvcGUoRXhlY1N0YXRlKiwgU2NvcGVDaGFpbiYp
IGNvbnN0CiB7CiB9CkluZGV4OiBiaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAo9
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09Ci0tLSBiaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAkocmV2aXNp
b24gMzcxMzkpCisrKyBiaW5kaW5ncy9qcy9KU01lc3NhZ2VQb3J0Q3VzdG9tLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtOTgsMzYgKzk4LDQgQEAgSlNWYWx1ZSogSlNNZXNzYWdlUG9ydDo6cmVtb3Zl
RXZlbnRMaXN0ZQogICAgIAogfQogCi12b2lkIEpTTWVzc2FnZVBvcnQ6OnNldE9ubWVzc2FnZShF
eGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUqIHZhbHVlKQotewotICAgIEZyYW1lKiBmcmFtZSA9IGlt
cGwoKS0+YXNzb2NpYXRlZEZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJu
OwotICAgIGltcGwoKS0+c2V0T25tZXNzYWdlKHRvSlNET01XaW5kb3coZnJhbWUpLT5maW5kT3JD
cmVhdGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihleGVjLCB2YWx1ZSkpOwotfQotCi1KU1Zh
bHVlKiBKU01lc3NhZ2VQb3J0Ojpvbm1lc3NhZ2UoRXhlY1N0YXRlKikgY29uc3QKLXsKLSAgICBp
ZiAoSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNV
bnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqPihpbXBsKCktPm9ubWVzc2FnZSgpKSkKLSAgICAgICAg
aWYgKEpTT2JqZWN0KiBsaXN0ZW5lck9iaiA9IGxpc3RlbmVyLT5saXN0ZW5lck9iaigpKQotICAg
ICAgICAgICAgcmV0dXJuIGxpc3RlbmVyT2JqOwotICAgIHJldHVybiBqc051bGwoKTsKLX0KLQot
dm9pZCBKU01lc3NhZ2VQb3J0OjpzZXRPbmNsb3NlKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSog
dmFsdWUpCi17Ci0gICAgRnJhbWUqIGZyYW1lID0gaW1wbCgpLT5hc3NvY2lhdGVkRnJhbWUoKTsK
LSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLT5zZXRPbmNsb3Nl
KHRvSlNET01XaW5kb3coZnJhbWUpLT5maW5kT3JDcmVhdGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0
ZW5lcihleGVjLCB2YWx1ZSkpOwotfQotCi1KU1ZhbHVlKiBKU01lc3NhZ2VQb3J0OjpvbmNsb3Nl
KEV4ZWNTdGF0ZSopIGNvbnN0Ci17Ci0gICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVy
KiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4oaW1w
bCgpLT5vbmNsb3NlKCkpKQotICAgICAgICBpZiAoSlNPYmplY3QqIGxpc3RlbmVyT2JqID0gbGlz
dGVuZXItPmxpc3RlbmVyT2JqKCkpCi0gICAgICAgICAgICByZXR1cm4gbGlzdGVuZXJPYmo7Ci0g
ICAgcmV0dXJuIGpzTnVsbCgpOwotfQotCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBi
aW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAo9PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBiaW5k
aW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAkocmV2aXNpb24gMzcxMzkpCisrKyBi
aW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0Q3VzdG9tLmNwcAkod29ya2luZyBjb3B5KQpAQCAt
ODgsMTA5ICs4OCw2IEBAIHZvaWQgSlNYTUxIdHRwUmVxdWVzdDo6bWFyaygpCiAgICAgfQogfQog
Ci1KU1ZhbHVlKiBKU1hNTEh0dHBSZXF1ZXN0OjpvbnJlYWR5c3RhdGVjaGFuZ2UoRXhlY1N0YXRl
KikgY29uc3QKLXsKLSAgICBpZiAoSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVy
ID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqPihpbXBsKCktPm9ucmVh
ZHlzdGF0ZWNoYW5nZSgpKSkgewotICAgICAgICBpZiAoSlNPYmplY3QqIGxpc3RlbmVyT2JqID0g
bGlzdGVuZXItPmxpc3RlbmVyT2JqKCkpCi0gICAgICAgICAgICByZXR1cm4gbGlzdGVuZXJPYmo7
Ci0gICAgfQotICAgIHJldHVybiBqc051bGwoKTsKLX0KLQotdm9pZCBKU1hNTEh0dHBSZXF1ZXN0
OjpzZXRPbnJlYWR5c3RhdGVjaGFuZ2UoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlKiB2YWx1ZSkK
LXsKLSAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCktPmFzc29jaWF0ZWRGcmFtZSgpOwotICAgIGlm
ICghZnJhbWUpCi0gICAgICAgIHJldHVybjsKLSAgICBpbXBsKCktPnNldE9ucmVhZHlzdGF0ZWNo
YW5nZSh0b0pTRE9NV2luZG93KGZyYW1lKS0+ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3RlZEV2ZW50
TGlzdGVuZXIoZXhlYywgdmFsdWUsIHRydWUpKTsKLX0KLQotCi1KU1ZhbHVlKiBKU1hNTEh0dHBS
ZXF1ZXN0OjpvbmFib3J0KEV4ZWNTdGF0ZSopIGNvbnN0Ci17Ci0gICAgaWYgKEpTVW5wcm90ZWN0
ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVu
dExpc3RlbmVyKj4oaW1wbCgpLT5vbmFib3J0KCkpKSB7Ci0gICAgICAgIGlmIChKU09iamVjdCog
bGlzdGVuZXJPYmogPSBsaXN0ZW5lci0+bGlzdGVuZXJPYmooKSkKLSAgICAgICAgICAgIHJldHVy
biBsaXN0ZW5lck9iajsKLSAgICB9Ci0gICAgcmV0dXJuIGpzTnVsbCgpOwotfQotCi12b2lkIEpT
WE1MSHR0cFJlcXVlc3Q6OnNldE9uYWJvcnQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlKiB2YWx1
ZSkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCktPmFzc29jaWF0ZWRGcmFtZSgpOwotICAg
IGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybjsKLSAgICBpbXBsKCktPnNldE9uYWJvcnQodG9K
U0RPTVdpbmRvdyhmcmFtZSktPmZpbmRPckNyZWF0ZUpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVy
KGV4ZWMsIHZhbHVlLCB0cnVlKSk7Ci19Ci0KLUpTVmFsdWUqIEpTWE1MSHR0cFJlcXVlc3Q6Om9u
ZXJyb3IoRXhlY1N0YXRlKikgY29uc3QKLXsKLSAgICBpZiAoSlNVbnByb3RlY3RlZEV2ZW50TGlz
dGVuZXIqIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIq
PihpbXBsKCktPm9uZXJyb3IoKSkpIHsKLSAgICAgICAgaWYgKEpTT2JqZWN0KiBsaXN0ZW5lck9i
aiA9IGxpc3RlbmVyLT5saXN0ZW5lck9iaigpKQotICAgICAgICAgICAgcmV0dXJuIGxpc3RlbmVy
T2JqOwotICAgIH0KLSAgICByZXR1cm4ganNOdWxsKCk7Ci19Ci0KLXZvaWQgSlNYTUxIdHRwUmVx
dWVzdDo6c2V0T25lcnJvcihFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUqIHZhbHVlKQotewotICAg
IEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+YXNzb2NpYXRlZEZyYW1lKCk7Ci0gICAgaWYgKCFmcmFt
ZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGltcGwoKS0+c2V0T25lcnJvcih0b0pTRE9NV2luZG93
KGZyYW1lKS0+ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgdmFs
dWUsIHRydWUpKTsKLX0KLQotSlNWYWx1ZSogSlNYTUxIdHRwUmVxdWVzdDo6b25sb2FkKEV4ZWNT
dGF0ZSopIGNvbnN0Ci17Ci0gICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0
ZW5lciA9IHN0YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4oaW1wbCgpLT5v
bmxvYWQoKSkpIHsKLSAgICAgICAgaWYgKEpTT2JqZWN0KiBsaXN0ZW5lck9iaiA9IGxpc3RlbmVy
LT5saXN0ZW5lck9iaigpKQotICAgICAgICAgICAgcmV0dXJuIGxpc3RlbmVyT2JqOwotICAgIH0K
LSAgICByZXR1cm4ganNOdWxsKCk7Ci19Ci0KLXZvaWQgSlNYTUxIdHRwUmVxdWVzdDo6c2V0T25s
b2FkKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSogdmFsdWUpCi17Ci0gICAgRnJhbWUqIGZyYW1l
ID0gaW1wbCgpLT5hc3NvY2lhdGVkRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICBy
ZXR1cm47Ci0gICAgaW1wbCgpLT5zZXRPbmxvYWQodG9KU0RPTVdpbmRvdyhmcmFtZSktPmZpbmRP
ckNyZWF0ZUpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKGV4ZWMsIHZhbHVlLCB0cnVlKSk7Ci19
Ci0KLUpTVmFsdWUqIEpTWE1MSHR0cFJlcXVlc3Q6Om9ubG9hZHN0YXJ0KEV4ZWNTdGF0ZSopIGNv
bnN0Ci17Ci0gICAgaWYgKEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKiBsaXN0ZW5lciA9IHN0
YXRpY19jYXN0PEpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKj4oaW1wbCgpLT5vbmxvYWRzdGFy
dCgpKSkgewotICAgICAgICBpZiAoSlNPYmplY3QqIGxpc3RlbmVyT2JqID0gbGlzdGVuZXItPmxp
c3RlbmVyT2JqKCkpCi0gICAgICAgICAgICByZXR1cm4gbGlzdGVuZXJPYmo7Ci0gICAgfQotICAg
IHJldHVybiBqc051bGwoKTsKLX0KLQotdm9pZCBKU1hNTEh0dHBSZXF1ZXN0OjpzZXRPbmxvYWRz
dGFydChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUqIHZhbHVlKQotewotICAgIEZyYW1lKiBmcmFt
ZSA9IGltcGwoKS0+YXNzb2NpYXRlZEZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSkKLSAgICAgICAg
cmV0dXJuOwotICAgIGltcGwoKS0+c2V0T25sb2Fkc3RhcnQodG9KU0RPTVdpbmRvdyhmcmFtZSkt
PmZpbmRPckNyZWF0ZUpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyKGV4ZWMsIHZhbHVlLCB0cnVl
KSk7Ci19Ci0KLUpTVmFsdWUqIEpTWE1MSHR0cFJlcXVlc3Q6Om9ucHJvZ3Jlc3MoRXhlY1N0YXRl
KikgY29uc3QKLXsKLSAgICBpZiAoSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVy
ID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIqPihpbXBsKCktPm9ucHJv
Z3Jlc3MoKSkpIHsKLSAgICAgICAgaWYgKEpTT2JqZWN0KiBsaXN0ZW5lck9iaiA9IGxpc3RlbmVy
LT5saXN0ZW5lck9iaigpKQotICAgICAgICAgICAgcmV0dXJuIGxpc3RlbmVyT2JqOwotICAgIH0K
LSAgICByZXR1cm4ganNOdWxsKCk7Ci19Ci0KLXZvaWQgSlNYTUxIdHRwUmVxdWVzdDo6c2V0T25w
cm9ncmVzcyhFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUqIHZhbHVlKQotewotICAgIEZyYW1lKiBm
cmFtZSA9IGltcGwoKS0+YXNzb2NpYXRlZEZyYW1lKCk7Ci0gICAgaWYgKCFmcmFtZSkKLSAgICAg
ICAgcmV0dXJuOwotICAgIGltcGwoKS0+c2V0T25wcm9ncmVzcyh0b0pTRE9NV2luZG93KGZyYW1l
KS0+ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgdmFsdWUsIHRy
dWUpKTsKLX0KLQogLy8gQ3VzdG9tIGZ1bmN0aW9ucwogSlNWYWx1ZSogSlNYTUxIdHRwUmVxdWVz
dDo6b3BlbihFeGVjU3RhdGUqIGV4ZWMsIGNvbnN0IEFyZ0xpc3QmIGFyZ3MpCiB7CkluZGV4OiBi
aW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0VXBsb2FkQ3VzdG9tLmNwcAo9PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0t
LSBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0VXBsb2FkQ3VzdG9tLmNwcAkocmV2aXNpb24g
MzcxMzkpCisrKyBiaW5kaW5ncy9qcy9KU1hNTEh0dHBSZXF1ZXN0VXBsb2FkQ3VzdG9tLmNwcAko
d29ya2luZyBjb3B5KQpAQCAtNzcsOTEgKzc3LDYgQEAgdm9pZCBKU1hNTEh0dHBSZXF1ZXN0VXBs
b2FkOjptYXJrKCkKICAgICB9CiB9CiAKLUpTVmFsdWUqIEpTWE1MSHR0cFJlcXVlc3RVcGxvYWQ6
Om9uYWJvcnQoRXhlY1N0YXRlKikgY29uc3QKLXsKLSAgICBpZiAoSlNVbnByb3RlY3RlZEV2ZW50
TGlzdGVuZXIqIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlzdGVu
ZXIqPihpbXBsKCktPm9uYWJvcnQoKSkpIHsKLSAgICAgICAgaWYgKEpTT2JqZWN0KiBsaXN0ZW5l
ck9iaiA9IGxpc3RlbmVyLT5saXN0ZW5lck9iaigpKQotICAgICAgICAgICAgcmV0dXJuIGxpc3Rl
bmVyT2JqOwotICAgIH0KLSAgICByZXR1cm4ganNOdWxsKCk7Ci19Ci0KLXZvaWQgSlNYTUxIdHRw
UmVxdWVzdFVwbG9hZDo6c2V0T25hYm9ydChFeGVjU3RhdGUqIGV4ZWMsIEpTVmFsdWUqIHZhbHVl
KQotewotICAgIEZyYW1lKiBmcmFtZSA9IGltcGwoKS0+YXNzb2NpYXRlZEZyYW1lKCk7Ci0gICAg
aWYgKCFmcmFtZSkKLSAgICAgICAgcmV0dXJuOwotICAgIGltcGwoKS0+c2V0T25hYm9ydCh0b0pT
RE9NV2luZG93KGZyYW1lKS0+ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIo
ZXhlYywgdmFsdWUsIHRydWUpKTsKLX0KLQotSlNWYWx1ZSogSlNYTUxIdHRwUmVxdWVzdFVwbG9h
ZDo6b25lcnJvcihFeGVjU3RhdGUqKSBjb25zdAotewotICAgIGlmIChKU1VucHJvdGVjdGVkRXZl
bnRMaXN0ZW5lciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxKU1VucHJvdGVjdGVkRXZlbnRMaXN0
ZW5lcio+KGltcGwoKS0+b25lcnJvcigpKSkgewotICAgICAgICBpZiAoSlNPYmplY3QqIGxpc3Rl
bmVyT2JqID0gbGlzdGVuZXItPmxpc3RlbmVyT2JqKCkpCi0gICAgICAgICAgICByZXR1cm4gbGlz
dGVuZXJPYmo7Ci0gICAgfQotICAgIHJldHVybiBqc051bGwoKTsKLX0KLQotdm9pZCBKU1hNTEh0
dHBSZXF1ZXN0VXBsb2FkOjpzZXRPbmVycm9yKEV4ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSogdmFs
dWUpCi17Ci0gICAgRnJhbWUqIGZyYW1lID0gaW1wbCgpLT5hc3NvY2lhdGVkRnJhbWUoKTsKLSAg
ICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLT5zZXRPbmVycm9yKHRv
SlNET01XaW5kb3coZnJhbWUpLT5maW5kT3JDcmVhdGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5l
cihleGVjLCB2YWx1ZSwgdHJ1ZSkpOwotfQotCi1KU1ZhbHVlKiBKU1hNTEh0dHBSZXF1ZXN0VXBs
b2FkOjpvbmxvYWQoRXhlY1N0YXRlKikgY29uc3QKLXsKLSAgICBpZiAoSlNVbnByb3RlY3RlZEV2
ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50TGlz
dGVuZXIqPihpbXBsKCktPm9ubG9hZCgpKSkgewotICAgICAgICBpZiAoSlNPYmplY3QqIGxpc3Rl
bmVyT2JqID0gbGlzdGVuZXItPmxpc3RlbmVyT2JqKCkpCi0gICAgICAgICAgICByZXR1cm4gbGlz
dGVuZXJPYmo7Ci0gICAgfQotICAgIHJldHVybiBqc051bGwoKTsKLX0KLQotdm9pZCBKU1hNTEh0
dHBSZXF1ZXN0VXBsb2FkOjpzZXRPbmxvYWQoRXhlY1N0YXRlKiBleGVjLCBKU1ZhbHVlKiB2YWx1
ZSkKLXsKLSAgICBGcmFtZSogZnJhbWUgPSBpbXBsKCktPmFzc29jaWF0ZWRGcmFtZSgpOwotICAg
IGlmICghZnJhbWUpCi0gICAgICAgIHJldHVybjsKLSAgICBpbXBsKCktPnNldE9ubG9hZCh0b0pT
RE9NV2luZG93KGZyYW1lKS0+ZmluZE9yQ3JlYXRlSlNVbnByb3RlY3RlZEV2ZW50TGlzdGVuZXIo
ZXhlYywgdmFsdWUsIHRydWUpKTsKLX0KLQotSlNWYWx1ZSogSlNYTUxIdHRwUmVxdWVzdFVwbG9h
ZDo6b25sb2Fkc3RhcnQoRXhlY1N0YXRlKikgY29uc3QKLXsKLSAgICBpZiAoSlNVbnByb3RlY3Rl
ZEV2ZW50TGlzdGVuZXIqIGxpc3RlbmVyID0gc3RhdGljX2Nhc3Q8SlNVbnByb3RlY3RlZEV2ZW50
TGlzdGVuZXIqPihpbXBsKCktPm9ubG9hZHN0YXJ0KCkpKSB7Ci0gICAgICAgIGlmIChKU09iamVj
dCogbGlzdGVuZXJPYmogPSBsaXN0ZW5lci0+bGlzdGVuZXJPYmooKSkKLSAgICAgICAgICAgIHJl
dHVybiBsaXN0ZW5lck9iajsKLSAgICB9Ci0gICAgcmV0dXJuIGpzTnVsbCgpOwotfQotCi12b2lk
IEpTWE1MSHR0cFJlcXVlc3RVcGxvYWQ6OnNldE9ubG9hZHN0YXJ0KEV4ZWNTdGF0ZSogZXhlYywg
SlNWYWx1ZSogdmFsdWUpCi17Ci0gICAgRnJhbWUqIGZyYW1lID0gaW1wbCgpLT5hc3NvY2lhdGVk
RnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm47Ci0gICAgaW1wbCgpLT5z
ZXRPbmxvYWRzdGFydCh0b0pTRE9NV2luZG93KGZyYW1lKS0+ZmluZE9yQ3JlYXRlSlNVbnByb3Rl
Y3RlZEV2ZW50TGlzdGVuZXIoZXhlYywgdmFsdWUsIHRydWUpKTsKLX0KLQotSlNWYWx1ZSogSlNY
TUxIdHRwUmVxdWVzdFVwbG9hZDo6b25wcm9ncmVzcyhFeGVjU3RhdGUqKSBjb25zdAotewotICAg
IGlmIChKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lciogbGlzdGVuZXIgPSBzdGF0aWNfY2FzdDxK
U1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcio+KGltcGwoKS0+b25wcm9ncmVzcygpKSkgewotICAg
ICAgICBpZiAoSlNPYmplY3QqIGxpc3RlbmVyT2JqID0gbGlzdGVuZXItPmxpc3RlbmVyT2JqKCkp
Ci0gICAgICAgICAgICByZXR1cm4gbGlzdGVuZXJPYmo7Ci0gICAgfQotICAgIHJldHVybiBqc051
bGwoKTsKLX0KLQotdm9pZCBKU1hNTEh0dHBSZXF1ZXN0VXBsb2FkOjpzZXRPbnByb2dyZXNzKEV4
ZWNTdGF0ZSogZXhlYywgSlNWYWx1ZSogdmFsdWUpCi17Ci0gICAgRnJhbWUqIGZyYW1lID0gaW1w
bCgpLT5hc3NvY2lhdGVkRnJhbWUoKTsKLSAgICBpZiAoIWZyYW1lKQotICAgICAgICByZXR1cm47
Ci0gICAgaW1wbCgpLT5zZXRPbnByb2dyZXNzKHRvSlNET01XaW5kb3coZnJhbWUpLT5maW5kT3JD
cmVhdGVKU1VucHJvdGVjdGVkRXZlbnRMaXN0ZW5lcihleGVjLCB2YWx1ZSwgdHJ1ZSkpOwotfQot
CiBKU1ZhbHVlKiBKU1hNTEh0dHBSZXF1ZXN0VXBsb2FkOjphZGRFdmVudExpc3RlbmVyKEV4ZWNT
dGF0ZSogZXhlYywgY29uc3QgQXJnTGlzdCYgYXJncykKIHsKICAgICBGcmFtZSogZnJhbWUgPSBp
bXBsKCktPmFzc29jaWF0ZWRGcmFtZSgpOwpJbmRleDogYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2Vu
ZXJhdG9ySlMucG0KPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PQotLS0gYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0JKHJldmlzaW9uIDM3MTM5KQorKysgYmluZGluZ3Mvc2NyaXB0cy9Db2RlR2VuZXJhdG9y
SlMucG0JKHdvcmtpbmcgY29weSkKQEAgLTQ5MywxMSArNDkzLDYgQEAgc3ViIEdlbmVyYXRlSGVh
ZGVyCiAgICAgIyBDb25zdHJ1Y3RvciBvYmplY3QgZ2V0dGVyCiAgICAgcHVzaChAaGVhZGVyQ29u
dGVudCwgIiAgICBzdGF0aWMgSlNDOjpKU1ZhbHVlKiBnZXRDb25zdHJ1Y3RvcihKU0M6OkV4ZWNT
dGF0ZSopO1xuIikgaWYgJGRhdGFOb2RlLT5leHRlbmRlZEF0dHJpYnV0ZXMtPnsiR2VuZXJhdGVD
b25zdHJ1Y3RvciJ9OwogCi0gICAgaWYgKCRkYXRhTm9kZS0+ZXh0ZW5kZWRBdHRyaWJ1dGVzLT57
IkN1c3RvbUxpc3RlbmVycyJ9KSB7Ci0gICAgICAgIHB1c2goQGhlYWRlckNvbnRlbnQsICIgICAg
SlNDOjpKU1ZhbHVlKiBnZXRMaXN0ZW5lcihKU0M6OkV4ZWNTdGF0ZSosIGNvbnN0IEF0b21pY1N0
cmluZyYgZXZlbnRUeXBlKSBjb25zdDtcbiIpOwotICAgICAgICBwdXNoKEBoZWFkZXJDb250ZW50
LCAiICAgIHZvaWQgc2V0TGlzdGVuZXIoSlNDOjpFeGVjU3RhdGUqLCBjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSwgSlNDOjpKU1ZhbHVlKiBmdW5jdGlvbik7XG4iKTsKLSAgICB9Ci0KICAg
ICBteSAkbnVtQ3VzdG9tRnVuY3Rpb25zID0gMDsKICAgICBteSAkbnVtQ3VzdG9tQXR0cmlidXRl
cyA9IDA7CiAKQEAgLTEwMjEsMTEgKzEwMTYsMjEgQEAgc3ViIEdlbmVyYXRlSW1wbGVtZW50YXRp
b24KICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3siSlNET01CaW5kaW5nLmgifSA9
IDE7CiAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICRpbXBsQ2xh
c3NOYW1lKiBpbXAgPSBzdGF0aWNfY2FzdDwkaW1wbENsYXNzTmFtZSo+KHN0YXRpY19jYXN0PCRj
bGFzc05hbWUqPihzbG90LnNsb3RCYXNlKCkpLT5pbXBsKCkpO1xuIik7CiAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgIHJldHVybiBjaGVja05vZGVTZWN1cml0eShl
eGVjLCBpbXAtPmNvbnRlbnREb2N1bWVudCgpKSA/ICIgLiBOYXRpdmVUb0pTVmFsdWUoJGF0dHJp
YnV0ZS0+c2lnbmF0dXJlLCAgMCwgJGltcGxDbGFzc05hbWUsICRpbXBsQ2xhc3NOYW1lRm9yVmFs
dWVDb252ZXJzaW9uLCAiaW1wLT4kaW1wbEdldHRlckZ1bmN0aW9uTmFtZSgpIiwgInN0YXRpY19j
YXN0PCRjbGFzc05hbWUqPihzbG90LnNsb3RCYXNlKCkpIikgLiAiIDoganNVbmRlZmluZWQoKTtc
biIpOwotICAgICAgICAgICAgICAgIH0gZWxzaWYgKCR0eXBlIGVxICJFdmVudExpc3RlbmVyIiAm
JiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21MaXN0ZW5lcnMifSkgewot
ICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJFdmVudE5hbWVzLmgifSA9IDE7Ci0g
ICAgICAgICAgICAgICAgICAgIG15ICRldmVudE5hbWUgPSAkbmFtZSAuICJFdmVudCI7Ci0gICAg
ICAgICAgICAgICAgICAgICRldmVudE5hbWUgPX4gcy9eb24vLzsKLSAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgcmV0dXJuIHN0YXRpY19jYXN0PCRjbGFzc05hbWUq
PihzbG90LnNsb3RCYXNlKCkpLT5nZXRMaXN0ZW5lcihleGVjLCBFdmVudE5hbWVzOjoke2V2ZW50
TmFtZX0pO1xuIik7CisgICAgICAgICAgICAgICAgfSBlbHNpZiAoJHR5cGUgZXEgIkV2ZW50TGlz
dGVuZXIiKSB7CisgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkpTRXZlbnRMaXN0
ZW5lci5oIn0gPSAxOworICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJFdmVudExp
c3RlbmVyLmgifSA9IDE7CisgICAgICAgICAgICAgICAgICAgIG15ICRsaXN0ZW5lclR5cGU7Cisg
ICAgICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0
cmlidXRlcy0+eyJQcm90ZWN0ZWRMaXN0ZW5lciJ9KSB7CisgICAgICAgICAgICAgICAgICAgICAg
ICAkbGlzdGVuZXJUeXBlID0gIkpTRXZlbnRMaXN0ZW5lciI7CisgICAgICAgICAgICAgICAgICAg
IH0gZWxzZSB7CisgICAgICAgICAgICAgICAgICAgICAgICAkbGlzdGVuZXJUeXBlID0gIkpTVW5w
cm90ZWN0ZWRFdmVudExpc3RlbmVyIjsKKyAgICAgICAgICAgICAgICAgICAgfQorICAgICAgICAg
ICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAkaW1wbENsYXNzTmFtZSogaW1wID0g
c3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4oc2xv
dC5zbG90QmFzZSgpKS0+aW1wbCgpKTtcbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBp
bXBsQ29udGVudCwgIiAgICBpZiAoJHtsaXN0ZW5lclR5cGV9KiBsaXN0ZW5lciA9IHN0YXRpY19j
YXN0PCR7bGlzdGVuZXJUeXBlfSo+KGltcC0+JGltcGxHZXR0ZXJGdW5jdGlvbk5hbWUoKSkpIHtc
biIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAgICAgaWYg
KEpTT2JqZWN0KiBsaXN0ZW5lck9iaiA9IGxpc3RlbmVyLT5saXN0ZW5lck9iaigpKVxuIik7Cisg
ICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICAgICAgcmV0dXJu
IGxpc3RlbmVyT2JqO1xuIik7CisgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250ZW50
LCAiICAgIH1cbiIpOworICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAg
ICByZXR1cm4ganNOdWxsKCk7XG4iKTsKICAgICAgICAgICAgICAgICB9IGVsc2lmICgkYXR0cmli
dXRlLT5zaWduYXR1cmUtPnR5cGUgPX4gL0NvbnN0cnVjdG9yJC8pIHsKICAgICAgICAgICAgICAg
ICAgICAgbXkgJGNvbnN0cnVjdG9yVHlwZSA9ICRjb2RlR2VuZXJhdG9yLT5TdHJpcE1vZHVsZSgk
YXR0cmlidXRlLT5zaWduYXR1cmUtPnR5cGUpOwogICAgICAgICAgICAgICAgICAgICAkY29uc3Ry
dWN0b3JUeXBlID1+IHMvQ29uc3RydWN0b3IkLy87CkBAIC0xMTM4LDEzICsxMTQzLDI3IEBAIHN1
YiBHZW5lcmF0ZUltcGxlbWVudGF0aW9uCiAgICAgICAgICAgICAgICAgICAgICAgICB9CiAKICAg
ICAgICAgICAgICAgICAgICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDdXN0b20ifSB8fCAkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVk
QXR0cmlidXRlcy0+eyJDdXN0b21TZXR0ZXIifSkgewotICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICMgRklYTUU6IEN1c3RvbSBmdW5jdGlvbiBjYW4gCiAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgc3RhdGljX2Nhc3Q8JGNsYXNzTmFtZSo+KHRo
aXNPYmplY3QpLT5zZXQkaW1wbFNldHRlckZ1bmN0aW9uTmFtZShleGVjLCB2YWx1ZSk7XG4iKTsK
LSAgICAgICAgICAgICAgICAgICAgICAgIH0gZWxzaWYgKCR0eXBlIGVxICJFdmVudExpc3RlbmVy
IiAmJiAkZGF0YU5vZGUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJDdXN0b21MaXN0ZW5lcnMifSkg
ewotICAgICAgICAgICAgICAgICAgICAgICAgICAgICRpbXBsSW5jbHVkZXN7IkV2ZW50TmFtZXMu
aCJ9ID0gMTsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBteSAkZXZlbnROYW1lID0gJG5h
bWUgLiAiRXZlbnQiOwotICAgICAgICAgICAgICAgICAgICAgICAgICAgICRldmVudE5hbWUgPX4g
cy9eb24vLzsKLSAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwg
IiAgICBzdGF0aWNfY2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPnNldExpc3RlbmVyKGV4
ZWMsIEV2ZW50TmFtZXM6OiR7ZXZlbnROYW1lfSwgdmFsdWUpO1xuIik7CisgICAgICAgICAgICAg
ICAgICAgICAgICB9IGVsc2lmICgkdHlwZSBlcSAiRXZlbnRMaXN0ZW5lciIpIHsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAkaW1wbEluY2x1ZGVzeyJKU0V2ZW50TGlzdGVuZXIuaCJ9ID0g
MTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBsQ29udGVudCwgIiAgICAk
aW1wbENsYXNzTmFtZSogaW1wID0gc3RhdGljX2Nhc3Q8JGltcGxDbGFzc05hbWUqPihzdGF0aWNf
Y2FzdDwkY2xhc3NOYW1lKj4odGhpc09iamVjdCktPmltcGwoKSk7XG4iKTsKKyAgICAgICAgICAg
ICAgICAgICAgICAgICAgICBteSAkbGlzdGVuZXJUeXBlOworICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIGlmICgkYXR0cmlidXRlLT5zaWduYXR1cmUtPmV4dGVuZGVkQXR0cmlidXRlcy0+eyJQ
cm90ZWN0ZWRMaXN0ZW5lciJ9KSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICRs
aXN0ZW5lclR5cGUgPSAiSlNFdmVudExpc3RlbmVyIjsKKyAgICAgICAgICAgICAgICAgICAgICAg
ICAgICB9IGVsc2UgeworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAkbGlzdGVuZXJU
eXBlID0gIkpTVW5wcm90ZWN0ZWRFdmVudExpc3RlbmVyIjsKKyAgICAgICAgICAgICAgICAgICAg
ICAgICAgICB9CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgaWYgKCRpbnRlcmZhY2VOYW1l
IGVxICJET01XaW5kb3ciKSB7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2go
QGltcGxDb250ZW50LCAiICAgIEpTRE9NV2luZG93KiB3aW5kb3cgPSBzdGF0aWNfY2FzdDxKU0RP
TVdpbmRvdyo+KHRoaXNPYmplY3QpO1xuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAgICAg
fSBlbHNlIHsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNsdWRlc3si
RnJhbWUuaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgJGltcGxJbmNs
dWRlc3siSlNET01XaW5kb3cuaCJ9ID0gMTsKKyAgICAgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgRnJhbWUqIGZyYW1lID0gaW1wLT5hc3NvY2lhdGVk
RnJhbWUoKTtcbiIpOworICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBwdXNoKEBpbXBs
Q29udGVudCwgIiAgICBpZiAoIWZyYW1lKVxuIik7CisgICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgIHB1c2goQGltcGxDb250ZW50LCAiICAgICAgICByZXR1cm47XG4iKTsKKyAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgcHVzaChAaW1wbENvbnRlbnQsICIgICAgSlNET01XaW5k
b3cqIHdpbmRvdyA9IHRvSlNET01XaW5kb3coZnJhbWUpO1xuIik7CisgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgfQorICAgICAgICAgICAgICAgICAgICAgICAgICAgIHB1c2goQGltcGxDb250
ZW50LCAiICAgIGltcC0+c2V0JGltcGxTZXR0ZXJGdW5jdGlvbk5hbWUod2luZG93LT5maW5kT3JD
cmVhdGUke2xpc3RlbmVyVHlwZX0oZXhlYywgdmFsdWUsIHRydWUpKTtcbiIpOwogICAgICAgICAg
ICAgICAgICAgICAgICAgfSBlbHNpZiAoJGF0dHJpYnV0ZS0+c2lnbmF0dXJlLT50eXBlID1+IC9D
b25zdHJ1Y3RvciQvKSB7CiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbXkgJGNvbnN0cnVj
dG9yVHlwZSA9ICRhdHRyaWJ1dGUtPnNpZ25hdHVyZS0+dHlwZTsKICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAkY29uc3RydWN0b3JUeXBlID1+IHMvQ29uc3RydWN0b3IkLy87CkluZGV4OiBk
b20vRXZlbnRUYXJnZXROb2RlLmNwcAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBkb20vRXZlbnRUYXJnZXROb2Rl
LmNwcAkocmV2aXNpb24gMzcxMzkpCisrKyBkb20vRXZlbnRUYXJnZXROb2RlLmNwcAkod29ya2lu
ZyBjb3B5KQpAQCAtNjQ2LDcgKzY0Niw3IEBAIHZvaWQgRXZlbnRUYXJnZXROb2RlOjpzZXRFdmVu
dExpc3RlbmVyRm8KICAgICBzZXRFdmVudExpc3RlbmVyRm9yVHlwZShldmVudFR5cGUsIGRvY3Vt
ZW50KCktPmNyZWF0ZUV2ZW50TGlzdGVuZXIoYXR0ci0+bG9jYWxOYW1lKCkuc3RyaW5nKCksIGF0
dHItPnZhbHVlKCksIHRoaXMpKTsKIH0KIAotRXZlbnRMaXN0ZW5lciogRXZlbnRUYXJnZXROb2Rl
OjpldmVudExpc3RlbmVyRm9yVHlwZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkKK0V2
ZW50TGlzdGVuZXIqIEV2ZW50VGFyZ2V0Tm9kZTo6ZXZlbnRMaXN0ZW5lckZvclR5cGUoY29uc3Qg
QXRvbWljU3RyaW5nJiBldmVudFR5cGUpIGNvbnN0CiB7CiAgICAgaWYgKCFtX3JlZ2RMaXN0ZW5l
cnMpCiAgICAgICAgIHJldHVybiAwOwpAQCAtNjg2LDQgKzY4Niw0MDQgQEAgdm9pZCBFdmVudFRh
cmdldE5vZGU6OmRlZmF1bHRFdmVudEhhbmRsZQogICAgIH0KIH0KIAorRXZlbnRMaXN0ZW5lciog
RXZlbnRUYXJnZXROb2RlOjpvbmFib3J0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnRMaXN0
ZW5lckZvclR5cGUoYWJvcnRFdmVudCk7Cit9CisKK3ZvaWQgRXZlbnRUYXJnZXROb2RlOjpzZXRP
bmFib3J0KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBz
ZXRFdmVudExpc3RlbmVyRm9yVHlwZShhYm9ydEV2ZW50LCBldmVudExpc3RlbmVyKTsKK30KKwor
RXZlbnRMaXN0ZW5lciogRXZlbnRUYXJnZXROb2RlOjpvbmJsdXIoKSBjb25zdAoreworICAgIHJl
dHVybiBldmVudExpc3RlbmVyRm9yVHlwZShibHVyRXZlbnQpOworfQorCit2b2lkIEV2ZW50VGFy
Z2V0Tm9kZTo6c2V0T25ibHVyKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5l
cikKK3sKKyAgICBzZXRFdmVudExpc3RlbmVyRm9yVHlwZShibHVyRXZlbnQsIGV2ZW50TGlzdGVu
ZXIpOworfQorCitFdmVudExpc3RlbmVyKiBFdmVudFRhcmdldE5vZGU6Om9uY2hhbmdlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZXZlbnRMaXN0ZW5lckZvclR5cGUoY2hhbmdlRXZlbnQpOworfQor
Cit2b2lkIEV2ZW50VGFyZ2V0Tm9kZTo6c2V0T25jaGFuZ2UoUGFzc1JlZlB0cjxFdmVudExpc3Rl
bmVyPiBldmVudExpc3RlbmVyKQoreworICAgIHNldEV2ZW50TGlzdGVuZXJGb3JUeXBlKGNoYW5n
ZUV2ZW50LCBldmVudExpc3RlbmVyKTsKK30KKworRXZlbnRMaXN0ZW5lciogRXZlbnRUYXJnZXRO
b2RlOjpvbmNsaWNrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnRMaXN0ZW5lckZvclR5cGUo
Y2xpY2tFdmVudCk7Cit9CisKK3ZvaWQgRXZlbnRUYXJnZXROb2RlOjpzZXRPbmNsaWNrKFBhc3NS
ZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBzZXRFdmVudExpc3Rl
bmVyRm9yVHlwZShjbGlja0V2ZW50LCBldmVudExpc3RlbmVyKTsKK30KKworRXZlbnRMaXN0ZW5l
ciogRXZlbnRUYXJnZXROb2RlOjpvbmNvbnRleHRtZW51KCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZXZlbnRMaXN0ZW5lckZvclR5cGUoY29udGV4dG1lbnVFdmVudCk7Cit9CisKK3ZvaWQgRXZlbnRU
YXJnZXROb2RlOjpzZXRPbmNvbnRleHRtZW51KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZl
bnRMaXN0ZW5lcikKK3sKKyAgICBzZXRFdmVudExpc3RlbmVyRm9yVHlwZShjb250ZXh0bWVudUV2
ZW50LCBldmVudExpc3RlbmVyKTsKK30KKworRXZlbnRMaXN0ZW5lciogRXZlbnRUYXJnZXROb2Rl
OjpvbmRibGNsaWNrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnRMaXN0ZW5lckZvclR5cGUo
ZGJsY2xpY2tFdmVudCk7Cit9CisKK3ZvaWQgRXZlbnRUYXJnZXROb2RlOjpzZXRPbmRibGNsaWNr
KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBzZXRFdmVu
dExpc3RlbmVyRm9yVHlwZShkYmxjbGlja0V2ZW50LCBldmVudExpc3RlbmVyKTsKK30KKworRXZl
bnRMaXN0ZW5lciogRXZlbnRUYXJnZXROb2RlOjpvbmVycm9yKCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZXZlbnRMaXN0ZW5lckZvclR5cGUoZXJyb3JFdmVudCk7Cit9CisKK3ZvaWQgRXZlbnRUYXJn
ZXROb2RlOjpzZXRPbmVycm9yKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5l
cikKK3sKKyAgICBzZXRFdmVudExpc3RlbmVyRm9yVHlwZShlcnJvckV2ZW50LCBldmVudExpc3Rl
bmVyKTsKK30KKworRXZlbnRMaXN0ZW5lciogRXZlbnRUYXJnZXROb2RlOjpvbmZvY3VzKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZXZlbnRMaXN0ZW5lckZvclR5cGUoZm9jdXNFdmVudCk7Cit9CisK
K3ZvaWQgRXZlbnRUYXJnZXROb2RlOjpzZXRPbmZvY3VzKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4gZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBzZXRFdmVudExpc3RlbmVyRm9yVHlwZShmb2N1c0V2
ZW50LCBldmVudExpc3RlbmVyKTsKK30KKworRXZlbnRMaXN0ZW5lciogRXZlbnRUYXJnZXROb2Rl
OjpvbmlucHV0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnRMaXN0ZW5lckZvclR5cGUoaW5w
dXRFdmVudCk7Cit9CisKK3ZvaWQgRXZlbnRUYXJnZXROb2RlOjpzZXRPbmlucHV0KFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBzZXRFdmVudExpc3RlbmVy
Rm9yVHlwZShpbnB1dEV2ZW50LCBldmVudExpc3RlbmVyKTsKK30KKworRXZlbnRMaXN0ZW5lciog
RXZlbnRUYXJnZXROb2RlOjpvbmtleWRvd24oKSBjb25zdAoreworICAgIHJldHVybiBldmVudExp
c3RlbmVyRm9yVHlwZShrZXlkb3duRXZlbnQpOworfQorCit2b2lkIEV2ZW50VGFyZ2V0Tm9kZTo6
c2V0T25rZXlkb3duKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sK
KyAgICBzZXRFdmVudExpc3RlbmVyRm9yVHlwZShrZXlkb3duRXZlbnQsIGV2ZW50TGlzdGVuZXIp
OworfQorCitFdmVudExpc3RlbmVyKiBFdmVudFRhcmdldE5vZGU6Om9ua2V5cHJlc3MoKSBjb25z
dAoreworICAgIHJldHVybiBldmVudExpc3RlbmVyRm9yVHlwZShrZXlwcmVzc0V2ZW50KTsKK30K
Kwordm9pZCBFdmVudFRhcmdldE5vZGU6OnNldE9ua2V5cHJlc3MoUGFzc1JlZlB0cjxFdmVudExp
c3RlbmVyPiBldmVudExpc3RlbmVyKQoreworICAgIHNldEV2ZW50TGlzdGVuZXJGb3JUeXBlKGtl
eXByZXNzRXZlbnQsIGV2ZW50TGlzdGVuZXIpOworfQorCitFdmVudExpc3RlbmVyKiBFdmVudFRh
cmdldE5vZGU6Om9ua2V5dXAoKSBjb25zdAoreworICAgIHJldHVybiBldmVudExpc3RlbmVyRm9y
VHlwZShrZXl1cEV2ZW50KTsKK30KKwordm9pZCBFdmVudFRhcmdldE5vZGU6OnNldE9ua2V5dXAo
UGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKQoreworICAgIHNldEV2ZW50
TGlzdGVuZXJGb3JUeXBlKGtleXVwRXZlbnQsIGV2ZW50TGlzdGVuZXIpOworfQorCitFdmVudExp
c3RlbmVyKiBFdmVudFRhcmdldE5vZGU6Om9ubG9hZCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2
ZW50TGlzdGVuZXJGb3JUeXBlKGxvYWRFdmVudCk7Cit9CisKK3ZvaWQgRXZlbnRUYXJnZXROb2Rl
OjpzZXRPbmxvYWQoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKQorewor
ICAgIHNldEV2ZW50TGlzdGVuZXJGb3JUeXBlKGxvYWRFdmVudCwgZXZlbnRMaXN0ZW5lcik7Cit9
CisKK0V2ZW50TGlzdGVuZXIqIEV2ZW50VGFyZ2V0Tm9kZTo6b25tb3VzZWRvd24oKSBjb25zdAor
eworICAgIHJldHVybiBldmVudExpc3RlbmVyRm9yVHlwZShtb3VzZWRvd25FdmVudCk7Cit9CisK
K3ZvaWQgRXZlbnRUYXJnZXROb2RlOjpzZXRPbm1vdXNlZG93bihQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IGV2ZW50TGlzdGVuZXIpCit7CisgICAgc2V0RXZlbnRMaXN0ZW5lckZvclR5cGUobW91
c2Vkb3duRXZlbnQsIGV2ZW50TGlzdGVuZXIpOworfQorCitFdmVudExpc3RlbmVyKiBFdmVudFRh
cmdldE5vZGU6Om9ubW91c2Vtb3ZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnRMaXN0ZW5l
ckZvclR5cGUobW91c2Vtb3ZlRXZlbnQpOworfQorCit2b2lkIEV2ZW50VGFyZ2V0Tm9kZTo6c2V0
T25tb3VzZW1vdmUoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKQorewor
ICAgIHNldEV2ZW50TGlzdGVuZXJGb3JUeXBlKG1vdXNlbW92ZUV2ZW50LCBldmVudExpc3RlbmVy
KTsKK30KKworRXZlbnRMaXN0ZW5lciogRXZlbnRUYXJnZXROb2RlOjpvbm1vdXNlb3V0KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZXZlbnRMaXN0ZW5lckZvclR5cGUobW91c2VvdXRFdmVudCk7Cit9
CisKK3ZvaWQgRXZlbnRUYXJnZXROb2RlOjpzZXRPbm1vdXNlb3V0KFBhc3NSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBzZXRFdmVudExpc3RlbmVyRm9yVHlwZSht
b3VzZW91dEV2ZW50LCBldmVudExpc3RlbmVyKTsKK30KKworRXZlbnRMaXN0ZW5lciogRXZlbnRU
YXJnZXROb2RlOjpvbm1vdXNlb3ZlcigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TGlzdGVu
ZXJGb3JUeXBlKG1vdXNlb3ZlckV2ZW50KTsKK30KKwordm9pZCBFdmVudFRhcmdldE5vZGU6OnNl
dE9ubW91c2VvdmVyKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sK
KyAgICBzZXRFdmVudExpc3RlbmVyRm9yVHlwZShtb3VzZW92ZXJFdmVudCwgZXZlbnRMaXN0ZW5l
cik7Cit9CisKK0V2ZW50TGlzdGVuZXIqIEV2ZW50VGFyZ2V0Tm9kZTo6b25tb3VzZXVwKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZXZlbnRMaXN0ZW5lckZvclR5cGUobW91c2V1cEV2ZW50KTsKK30K
Kwordm9pZCBFdmVudFRhcmdldE5vZGU6OnNldE9ubW91c2V1cChQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+IGV2ZW50TGlzdGVuZXIpCit7CisgICAgc2V0RXZlbnRMaXN0ZW5lckZvclR5cGUobW91
c2V1cEV2ZW50LCBldmVudExpc3RlbmVyKTsKK30KKworRXZlbnRMaXN0ZW5lciogRXZlbnRUYXJn
ZXROb2RlOjpvbm1vdXNld2hlZWwoKSBjb25zdAoreworICAgIHJldHVybiBldmVudExpc3RlbmVy
Rm9yVHlwZShtb3VzZXdoZWVsRXZlbnQpOworfQorCit2b2lkIEV2ZW50VGFyZ2V0Tm9kZTo6c2V0
T25tb3VzZXdoZWVsKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sK
KyAgICBzZXRFdmVudExpc3RlbmVyRm9yVHlwZShtb3VzZXdoZWVsRXZlbnQsIGV2ZW50TGlzdGVu
ZXIpOworfQorCitFdmVudExpc3RlbmVyKiBFdmVudFRhcmdldE5vZGU6Om9uYmVmb3JlY3V0KCkg
Y29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnRMaXN0ZW5lckZvclR5cGUoYmVmb3JlY3V0RXZlbnQp
OworfQorCit2b2lkIEV2ZW50VGFyZ2V0Tm9kZTo6c2V0T25iZWZvcmVjdXQoUGFzc1JlZlB0cjxF
dmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKQoreworICAgIHNldEV2ZW50TGlzdGVuZXJGb3JU
eXBlKGJlZm9yZWN1dEV2ZW50LCBldmVudExpc3RlbmVyKTsKK30KKworRXZlbnRMaXN0ZW5lciog
RXZlbnRUYXJnZXROb2RlOjpvbmN1dCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TGlzdGVu
ZXJGb3JUeXBlKGN1dEV2ZW50KTsKK30KKwordm9pZCBFdmVudFRhcmdldE5vZGU6OnNldE9uY3V0
KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBzZXRFdmVu
dExpc3RlbmVyRm9yVHlwZShjdXRFdmVudCwgZXZlbnRMaXN0ZW5lcik7Cit9CisKK0V2ZW50TGlz
dGVuZXIqIEV2ZW50VGFyZ2V0Tm9kZTo6b25iZWZvcmVjb3B5KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZXZlbnRMaXN0ZW5lckZvclR5cGUoYmVmb3JlY29weUV2ZW50KTsKK30KKwordm9pZCBFdmVu
dFRhcmdldE5vZGU6OnNldE9uYmVmb3JlY29weShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2
ZW50TGlzdGVuZXIpCit7CisgICAgc2V0RXZlbnRMaXN0ZW5lckZvclR5cGUoYmVmb3JlY29weUV2
ZW50LCBldmVudExpc3RlbmVyKTsKK30KKworRXZlbnRMaXN0ZW5lciogRXZlbnRUYXJnZXROb2Rl
OjpvbmNvcHkoKSBjb25zdAoreworICAgIHJldHVybiBldmVudExpc3RlbmVyRm9yVHlwZShjb3B5
RXZlbnQpOworfQorCit2b2lkIEV2ZW50VGFyZ2V0Tm9kZTo6c2V0T25jb3B5KFBhc3NSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBzZXRFdmVudExpc3RlbmVyRm9y
VHlwZShjb3B5RXZlbnQsIGV2ZW50TGlzdGVuZXIpOworfQorCitFdmVudExpc3RlbmVyKiBFdmVu
dFRhcmdldE5vZGU6Om9uYmVmb3JlcGFzdGUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudExp
c3RlbmVyRm9yVHlwZShiZWZvcmVwYXN0ZUV2ZW50KTsKK30KKwordm9pZCBFdmVudFRhcmdldE5v
ZGU6OnNldE9uYmVmb3JlcGFzdGUoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3Rl
bmVyKQoreworICAgIHNldEV2ZW50TGlzdGVuZXJGb3JUeXBlKGJlZm9yZXBhc3RlRXZlbnQsIGV2
ZW50TGlzdGVuZXIpOworfQorCitFdmVudExpc3RlbmVyKiBFdmVudFRhcmdldE5vZGU6Om9ucGFz
dGUoKSBjb25zdAoreworICAgIHJldHVybiBldmVudExpc3RlbmVyRm9yVHlwZShwYXN0ZUV2ZW50
KTsKK30KKwordm9pZCBFdmVudFRhcmdldE5vZGU6OnNldE9ucGFzdGUoUGFzc1JlZlB0cjxFdmVu
dExpc3RlbmVyPiBldmVudExpc3RlbmVyKQoreworICAgIHNldEV2ZW50TGlzdGVuZXJGb3JUeXBl
KHBhc3RlRXZlbnQsIGV2ZW50TGlzdGVuZXIpOworfQorCitFdmVudExpc3RlbmVyKiBFdmVudFRh
cmdldE5vZGU6Om9uZHJhZ2VudGVyKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnRMaXN0ZW5l
ckZvclR5cGUoZHJhZ2VudGVyRXZlbnQpOworfQorCit2b2lkIEV2ZW50VGFyZ2V0Tm9kZTo6c2V0
T25kcmFnZW50ZXIoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKQorewor
ICAgIHNldEV2ZW50TGlzdGVuZXJGb3JUeXBlKGRyYWdlbnRlckV2ZW50LCBldmVudExpc3RlbmVy
KTsKK30KKworRXZlbnRMaXN0ZW5lciogRXZlbnRUYXJnZXROb2RlOjpvbmRyYWdvdmVyKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZXZlbnRMaXN0ZW5lckZvclR5cGUoZHJhZ292ZXJFdmVudCk7Cit9
CisKK3ZvaWQgRXZlbnRUYXJnZXROb2RlOjpzZXRPbmRyYWdvdmVyKFBhc3NSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBzZXRFdmVudExpc3RlbmVyRm9yVHlwZShk
cmFnb3ZlckV2ZW50LCBldmVudExpc3RlbmVyKTsKK30KKworRXZlbnRMaXN0ZW5lciogRXZlbnRU
YXJnZXROb2RlOjpvbmRyYWdsZWF2ZSgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TGlzdGVu
ZXJGb3JUeXBlKGRyYWdsZWF2ZUV2ZW50KTsKK30KKwordm9pZCBFdmVudFRhcmdldE5vZGU6OnNl
dE9uZHJhZ2xlYXZlKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sK
KyAgICBzZXRFdmVudExpc3RlbmVyRm9yVHlwZShkcmFnbGVhdmVFdmVudCwgZXZlbnRMaXN0ZW5l
cik7Cit9CisKK0V2ZW50TGlzdGVuZXIqIEV2ZW50VGFyZ2V0Tm9kZTo6b25kcm9wKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZXZlbnRMaXN0ZW5lckZvclR5cGUoZHJvcEV2ZW50KTsKK30KKwordm9p
ZCBFdmVudFRhcmdldE5vZGU6OnNldE9uZHJvcChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2
ZW50TGlzdGVuZXIpCit7CisgICAgc2V0RXZlbnRMaXN0ZW5lckZvclR5cGUoZHJvcEV2ZW50LCBl
dmVudExpc3RlbmVyKTsKK30KKworRXZlbnRMaXN0ZW5lciogRXZlbnRUYXJnZXROb2RlOjpvbmRy
YWdzdGFydCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TGlzdGVuZXJGb3JUeXBlKGRyYWdz
dGFydEV2ZW50KTsKK30KKwordm9pZCBFdmVudFRhcmdldE5vZGU6OnNldE9uZHJhZ3N0YXJ0KFBh
c3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBzZXRFdmVudExp
c3RlbmVyRm9yVHlwZShkcmFnc3RhcnRFdmVudCwgZXZlbnRMaXN0ZW5lcik7Cit9CisKK0V2ZW50
TGlzdGVuZXIqIEV2ZW50VGFyZ2V0Tm9kZTo6b25kcmFnKCkgY29uc3QKK3sKKyAgICByZXR1cm4g
ZXZlbnRMaXN0ZW5lckZvclR5cGUoZHJhZ0V2ZW50KTsKK30KKwordm9pZCBFdmVudFRhcmdldE5v
ZGU6OnNldE9uZHJhZyhQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpCit7
CisgICAgc2V0RXZlbnRMaXN0ZW5lckZvclR5cGUoZHJhZ0V2ZW50LCBldmVudExpc3RlbmVyKTsK
K30KKworRXZlbnRMaXN0ZW5lciogRXZlbnRUYXJnZXROb2RlOjpvbmRyYWdlbmQoKSBjb25zdAor
eworICAgIHJldHVybiBldmVudExpc3RlbmVyRm9yVHlwZShkcmFnZW5kRXZlbnQpOworfQorCit2
b2lkIEV2ZW50VGFyZ2V0Tm9kZTo6c2V0T25kcmFnZW5kKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4gZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBzZXRFdmVudExpc3RlbmVyRm9yVHlwZShkcmFnZW5k
RXZlbnQsIGV2ZW50TGlzdGVuZXIpOworfQorCitFdmVudExpc3RlbmVyKiBFdmVudFRhcmdldE5v
ZGU6Om9ucmVzZXQoKSBjb25zdAoreworICAgIHJldHVybiBldmVudExpc3RlbmVyRm9yVHlwZShy
ZXNldEV2ZW50KTsKK30KKwordm9pZCBFdmVudFRhcmdldE5vZGU6OnNldE9ucmVzZXQoUGFzc1Jl
ZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKQoreworICAgIHNldEV2ZW50TGlzdGVu
ZXJGb3JUeXBlKHJlc2V0RXZlbnQsIGV2ZW50TGlzdGVuZXIpOworfQorCitFdmVudExpc3RlbmVy
KiBFdmVudFRhcmdldE5vZGU6Om9ucmVzaXplKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnRM
aXN0ZW5lckZvclR5cGUocmVzaXplRXZlbnQpOworfQorCit2b2lkIEV2ZW50VGFyZ2V0Tm9kZTo6
c2V0T25yZXNpemUoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKQorewor
ICAgIHNldEV2ZW50TGlzdGVuZXJGb3JUeXBlKHJlc2l6ZUV2ZW50LCBldmVudExpc3RlbmVyKTsK
K30KKworRXZlbnRMaXN0ZW5lciogRXZlbnRUYXJnZXROb2RlOjpvbnNjcm9sbCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGV2ZW50TGlzdGVuZXJGb3JUeXBlKHNjcm9sbEV2ZW50KTsKK30KKwordm9p
ZCBFdmVudFRhcmdldE5vZGU6OnNldE9uc2Nyb2xsKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4g
ZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBzZXRFdmVudExpc3RlbmVyRm9yVHlwZShzY3JvbGxFdmVu
dCwgZXZlbnRMaXN0ZW5lcik7Cit9CisKK0V2ZW50TGlzdGVuZXIqIEV2ZW50VGFyZ2V0Tm9kZTo6
b25zZWFyY2goKSBjb25zdAoreworICAgIHJldHVybiBldmVudExpc3RlbmVyRm9yVHlwZShzZWFy
Y2hFdmVudCk7Cit9CisKK3ZvaWQgRXZlbnRUYXJnZXROb2RlOjpzZXRPbnNlYXJjaChQYXNzUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpCit7CisgICAgc2V0RXZlbnRMaXN0ZW5l
ckZvclR5cGUoc2VhcmNoRXZlbnQsIGV2ZW50TGlzdGVuZXIpOworfQorCitFdmVudExpc3RlbmVy
KiBFdmVudFRhcmdldE5vZGU6Om9uc2VsZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnRM
aXN0ZW5lckZvclR5cGUoc2VsZWN0RXZlbnQpOworfQorCit2b2lkIEV2ZW50VGFyZ2V0Tm9kZTo6
c2V0T25zZWxlY3QoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKQorewor
ICAgIHNldEV2ZW50TGlzdGVuZXJGb3JUeXBlKHNlbGVjdEV2ZW50LCBldmVudExpc3RlbmVyKTsK
K30KKworRXZlbnRMaXN0ZW5lciogRXZlbnRUYXJnZXROb2RlOjpvbnNlbGVjdHN0YXJ0KCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZXZlbnRMaXN0ZW5lckZvclR5cGUoc2VsZWN0c3RhcnRFdmVudCk7
Cit9CisKK3ZvaWQgRXZlbnRUYXJnZXROb2RlOjpzZXRPbnNlbGVjdHN0YXJ0KFBhc3NSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBzZXRFdmVudExpc3RlbmVyRm9y
VHlwZShzZWxlY3RzdGFydEV2ZW50LCBldmVudExpc3RlbmVyKTsKK30KKworRXZlbnRMaXN0ZW5l
ciogRXZlbnRUYXJnZXROb2RlOjpvbnN1Ym1pdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50
TGlzdGVuZXJGb3JUeXBlKHN1Ym1pdEV2ZW50KTsKK30KKwordm9pZCBFdmVudFRhcmdldE5vZGU6
OnNldE9uc3VibWl0KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sK
KyAgICBzZXRFdmVudExpc3RlbmVyRm9yVHlwZShzdWJtaXRFdmVudCwgZXZlbnRMaXN0ZW5lcik7
Cit9CisKK0V2ZW50TGlzdGVuZXIqIEV2ZW50VGFyZ2V0Tm9kZTo6b251bmxvYWQoKSBjb25zdAor
eworICAgIHJldHVybiBldmVudExpc3RlbmVyRm9yVHlwZSh1bmxvYWRFdmVudCk7Cit9CisKK3Zv
aWQgRXZlbnRUYXJnZXROb2RlOjpzZXRPbnVubG9hZChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+
IGV2ZW50TGlzdGVuZXIpCit7CisgICAgc2V0RXZlbnRMaXN0ZW5lckZvclR5cGUodW5sb2FkRXZl
bnQsIGV2ZW50TGlzdGVuZXIpOworfQorCiB9IC8vIG5hbWVzcGFjZSBXZWJDb3JlCkluZGV4OiBk
b20vRXZlbnRUYXJnZXROb2RlLmgKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gZG9tL0V2ZW50VGFyZ2V0Tm9kZS5o
CShyZXZpc2lvbiAzNzEzOSkKKysrIGRvbS9FdmVudFRhcmdldE5vZGUuaAkod29ya2luZyBjb3B5
KQpAQCAtNTIsNyArNTIsNyBAQCBwdWJsaWM6CiAgICAgdm9pZCBzZXRFdmVudExpc3RlbmVyRm9y
VHlwZUFuZEF0dHJpYnV0ZShjb25zdCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgQXR0cmlidXRl
Kik7CiAgICAgdm9pZCByZW1vdmVFdmVudExpc3RlbmVyRm9yVHlwZShjb25zdCBBdG9taWNTdHJp
bmcmIGV2ZW50VHlwZSk7CiAgICAgYm9vbCBkaXNwYXRjaEV2ZW50Rm9yVHlwZShjb25zdCBBdG9t
aWNTdHJpbmcmIGV2ZW50VHlwZSwgYm9vbCBjYW5CdWJibGUsIGJvb2wgY2FuY2VsYWJsZSk7Ci0g
ICAgRXZlbnRMaXN0ZW5lciogZXZlbnRMaXN0ZW5lckZvclR5cGUoY29uc3QgQXRvbWljU3RyaW5n
JiBldmVudFR5cGUpOworICAgIEV2ZW50TGlzdGVuZXIqIGV2ZW50TGlzdGVuZXJGb3JUeXBlKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlKSBjb25zdDsKIAogICAgIGJvb2wgZGlzcGF0Y2hT
dWJ0cmVlTW9kaWZpZWRFdmVudCgpOwogICAgIHZvaWQgZGlzcGF0Y2hXaW5kb3dFdmVudChQYXNz
UmVmUHRyPEV2ZW50Pik7CkBAIC05Nyw2ICs5Nyw4NyBAQCBwdWJsaWM6CiAKICAgICBSZWdpc3Rl
cmVkRXZlbnRMaXN0ZW5lckxpc3QqIGxvY2FsRXZlbnRMaXN0ZW5lcnMoKSBjb25zdCB7IHJldHVy
biBtX3JlZ2RMaXN0ZW5lcnM7IH0KIAorICAgIEV2ZW50TGlzdGVuZXIqIG9uYWJvcnQoKSBjb25z
dDsKKyAgICB2b2lkIHNldE9uYWJvcnQoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7CisgICAg
RXZlbnRMaXN0ZW5lciogb25ibHVyKCkgY29uc3Q7CisgICAgdm9pZCBzZXRPbmJsdXIoUGFzc1Jl
ZlB0cjxFdmVudExpc3RlbmVyPik7CisgICAgRXZlbnRMaXN0ZW5lciogb25jaGFuZ2UoKSBjb25z
dDsKKyAgICB2b2lkIHNldE9uY2hhbmdlKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOworICAg
IEV2ZW50TGlzdGVuZXIqIG9uY2xpY2soKSBjb25zdDsKKyAgICB2b2lkIHNldE9uY2xpY2soUGFz
c1JlZlB0cjxFdmVudExpc3RlbmVyPik7CisgICAgRXZlbnRMaXN0ZW5lciogb25jb250ZXh0bWVu
dSgpIGNvbnN0OworICAgIHZvaWQgc2V0T25jb250ZXh0bWVudShQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+KTsKKyAgICBFdmVudExpc3RlbmVyKiBvbmRibGNsaWNrKCkgY29uc3Q7CisgICAgdm9p
ZCBzZXRPbmRibGNsaWNrKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOworICAgIEV2ZW50TGlz
dGVuZXIqIG9uZXJyb3IoKSBjb25zdDsKKyAgICB2b2lkIHNldE9uZXJyb3IoUGFzc1JlZlB0cjxF
dmVudExpc3RlbmVyPik7CisgICAgRXZlbnRMaXN0ZW5lciogb25mb2N1cygpIGNvbnN0OworICAg
IHZvaWQgc2V0T25mb2N1cyhQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKKyAgICBFdmVudExp
c3RlbmVyKiBvbmlucHV0KCkgY29uc3Q7CisgICAgdm9pZCBzZXRPbmlucHV0KFBhc3NSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4pOworICAgIEV2ZW50TGlzdGVuZXIqIG9ua2V5ZG93bigpIGNvbnN0Owor
ICAgIHZvaWQgc2V0T25rZXlkb3duKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOworICAgIEV2
ZW50TGlzdGVuZXIqIG9ua2V5cHJlc3MoKSBjb25zdDsKKyAgICB2b2lkIHNldE9ua2V5cHJlc3Mo
UGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7CisgICAgRXZlbnRMaXN0ZW5lciogb25rZXl1cCgp
IGNvbnN0OworICAgIHZvaWQgc2V0T25rZXl1cChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsK
KyAgICBFdmVudExpc3RlbmVyKiBvbmxvYWQoKSBjb25zdDsKKyAgICB2b2lkIHNldE9ubG9hZChQ
YXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKKyAgICBFdmVudExpc3RlbmVyKiBvbm1vdXNlZG93
bigpIGNvbnN0OworICAgIHZvaWQgc2V0T25tb3VzZWRvd24oUGFzc1JlZlB0cjxFdmVudExpc3Rl
bmVyPik7CisgICAgRXZlbnRMaXN0ZW5lciogb25tb3VzZW1vdmUoKSBjb25zdDsKKyAgICB2b2lk
IHNldE9ubW91c2Vtb3ZlKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOworICAgIEV2ZW50TGlz
dGVuZXIqIG9ubW91c2VvdXQoKSBjb25zdDsKKyAgICB2b2lkIHNldE9ubW91c2VvdXQoUGFzc1Jl
ZlB0cjxFdmVudExpc3RlbmVyPik7CisgICAgRXZlbnRMaXN0ZW5lciogb25tb3VzZW92ZXIoKSBj
b25zdDsKKyAgICB2b2lkIHNldE9ubW91c2VvdmVyKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4p
OworICAgIEV2ZW50TGlzdGVuZXIqIG9ubW91c2V1cCgpIGNvbnN0OworICAgIHZvaWQgc2V0T25t
b3VzZXVwKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOworICAgIEV2ZW50TGlzdGVuZXIqIG9u
bW91c2V3aGVlbCgpIGNvbnN0OworICAgIHZvaWQgc2V0T25tb3VzZXdoZWVsKFBhc3NSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4pOworICAgIEV2ZW50TGlzdGVuZXIqIG9uYmVmb3JlY3V0KCkgY29uc3Q7
CisgICAgdm9pZCBzZXRPbmJlZm9yZWN1dChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKKyAg
ICBFdmVudExpc3RlbmVyKiBvbmN1dCgpIGNvbnN0OworICAgIHZvaWQgc2V0T25jdXQoUGFzc1Jl
ZlB0cjxFdmVudExpc3RlbmVyPik7CisgICAgRXZlbnRMaXN0ZW5lciogb25iZWZvcmVjb3B5KCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRPbmJlZm9yZWNvcHkoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVy
Pik7CisgICAgRXZlbnRMaXN0ZW5lciogb25jb3B5KCkgY29uc3Q7CisgICAgdm9pZCBzZXRPbmNv
cHkoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7CisgICAgRXZlbnRMaXN0ZW5lciogb25iZWZv
cmVwYXN0ZSgpIGNvbnN0OworICAgIHZvaWQgc2V0T25iZWZvcmVwYXN0ZShQYXNzUmVmUHRyPEV2
ZW50TGlzdGVuZXI+KTsKKyAgICBFdmVudExpc3RlbmVyKiBvbnBhc3RlKCkgY29uc3Q7CisgICAg
dm9pZCBzZXRPbnBhc3RlKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOworICAgIEV2ZW50TGlz
dGVuZXIqIG9uZHJhZ2VudGVyKCkgY29uc3Q7CisgICAgdm9pZCBzZXRPbmRyYWdlbnRlcihQYXNz
UmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKKyAgICBFdmVudExpc3RlbmVyKiBvbmRyYWdvdmVyKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRPbmRyYWdvdmVyKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4p
OworICAgIEV2ZW50TGlzdGVuZXIqIG9uZHJhZ2xlYXZlKCkgY29uc3Q7CisgICAgdm9pZCBzZXRP
bmRyYWdsZWF2ZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKKyAgICBFdmVudExpc3RlbmVy
KiBvbmRyb3AoKSBjb25zdDsKKyAgICB2b2lkIHNldE9uZHJvcChQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+KTsKKyAgICBFdmVudExpc3RlbmVyKiBvbmRyYWdzdGFydCgpIGNvbnN0OworICAgIHZv
aWQgc2V0T25kcmFnc3RhcnQoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7CisgICAgRXZlbnRM
aXN0ZW5lciogb25kcmFnKCkgY29uc3Q7CisgICAgdm9pZCBzZXRPbmRyYWcoUGFzc1JlZlB0cjxF
dmVudExpc3RlbmVyPik7CisgICAgRXZlbnRMaXN0ZW5lciogb25kcmFnZW5kKCkgY29uc3Q7Cisg
ICAgdm9pZCBzZXRPbmRyYWdlbmQoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7CisgICAgRXZl
bnRMaXN0ZW5lciogb25yZXNldCgpIGNvbnN0OworICAgIHZvaWQgc2V0T25yZXNldChQYXNzUmVm
UHRyPEV2ZW50TGlzdGVuZXI+KTsKKyAgICBFdmVudExpc3RlbmVyKiBvbnJlc2l6ZSgpIGNvbnN0
OworICAgIHZvaWQgc2V0T25yZXNpemUoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7CisgICAg
RXZlbnRMaXN0ZW5lciogb25zY3JvbGwoKSBjb25zdDsKKyAgICB2b2lkIHNldE9uc2Nyb2xsKFBh
c3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOworICAgIEV2ZW50TGlzdGVuZXIqIG9uc2VhcmNoKCkg
Y29uc3Q7CisgICAgdm9pZCBzZXRPbnNlYXJjaChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsK
KyAgICBFdmVudExpc3RlbmVyKiBvbnNlbGVjdCgpIGNvbnN0OworICAgIHZvaWQgc2V0T25zZWxl
Y3QoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7CisgICAgRXZlbnRMaXN0ZW5lciogb25zZWxl
Y3RzdGFydCgpIGNvbnN0OworICAgIHZvaWQgc2V0T25zZWxlY3RzdGFydChQYXNzUmVmUHRyPEV2
ZW50TGlzdGVuZXI+KTsKKyAgICBFdmVudExpc3RlbmVyKiBvbnN1Ym1pdCgpIGNvbnN0OworICAg
IHZvaWQgc2V0T25zdWJtaXQoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7CisgICAgRXZlbnRM
aXN0ZW5lciogb251bmxvYWQoKSBjb25zdDsKKyAgICB2b2lkIHNldE9udW5sb2FkKFBhc3NSZWZQ
dHI8RXZlbnRMaXN0ZW5lcj4pOworCiAgICAgdXNpbmcgTm9kZTo6cmVmOwogICAgIHVzaW5nIE5v
ZGU6OmRlcmVmOwogIApJbmRleDogZG9tL0V2ZW50VGFyZ2V0Tm9kZS5pZGwKPT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQot
LS0gZG9tL0V2ZW50VGFyZ2V0Tm9kZS5pZGwJKHJldmlzaW9uIDM3MTM5KQorKysgZG9tL0V2ZW50
VGFyZ2V0Tm9kZS5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTI2LDUxICsyNiw1MCBAQAogbW9kdWxl
IGNvcmUgewogCiAgICAgaW50ZXJmYWNlIFsKLSAgICAgICAgQ3VzdG9tTGlzdGVuZXJzLAogICAg
ICAgICBDdXN0b21QdXNoRXZlbnRIYW5kbGVyU2NvcGUsCiAgICAgICAgIEdlbmVyYXRlTmF0aXZl
Q29udmVydGVyCiAgICAgXSBFdmVudFRhcmdldE5vZGUgOiBOb2RlIHsKICAgICAgICAgLy8gRXZl
bnRUYXJnZXQKLSAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0ZW5lciBvbmFi
b3J0OwotICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExpc3RlbmVyIG9uYmx1cjsK
LSAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0ZW5lciBvbmNoYW5nZTsKLSAg
ICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0ZW5lciBvbmNsaWNrOwotICAgICAg
ICBhdHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExpc3RlbmVyIG9uY29udGV4dG1lbnU7Ci0gICAg
ICAgIGF0dHJpYnV0ZSBbRG9udEVudW1dIEV2ZW50TGlzdGVuZXIgb25kYmxjbGljazsKLSAgICAg
ICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0ZW5lciBvbmVycm9yOwotICAgICAgICBh
dHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExpc3RlbmVyIG9uZm9jdXM7Ci0gICAgICAgIGF0dHJp
YnV0ZSBbRG9udEVudW1dIEV2ZW50TGlzdGVuZXIgb25pbnB1dDsKLSAgICAgICAgYXR0cmlidXRl
IFtEb250RW51bV0gRXZlbnRMaXN0ZW5lciBvbmtleWRvd247Ci0gICAgICAgIGF0dHJpYnV0ZSBb
RG9udEVudW1dIEV2ZW50TGlzdGVuZXIgb25rZXlwcmVzczsKLSAgICAgICAgYXR0cmlidXRlIFtE
b250RW51bV0gRXZlbnRMaXN0ZW5lciBvbmtleXVwOwotICAgICAgICBhdHRyaWJ1dGUgW0RvbnRF
bnVtXSBFdmVudExpc3RlbmVyIG9ubG9hZDsKLSAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0g
RXZlbnRMaXN0ZW5lciBvbm1vdXNlZG93bjsKLSAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0g
RXZlbnRMaXN0ZW5lciBvbm1vdXNlbW92ZTsKLSAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0g
RXZlbnRMaXN0ZW5lciBvbm1vdXNlb3V0OwotICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtXSBF
dmVudExpc3RlbmVyIG9ubW91c2VvdmVyOwotICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtXSBF
dmVudExpc3RlbmVyIG9ubW91c2V1cDsKLSAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZl
bnRMaXN0ZW5lciBvbm1vdXNld2hlZWw7Ci0gICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW1dIEV2
ZW50TGlzdGVuZXIgb25iZWZvcmVjdXQ7Ci0gICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW1dIEV2
ZW50TGlzdGVuZXIgb25jdXQ7Ci0gICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW1dIEV2ZW50TGlz
dGVuZXIgb25iZWZvcmVjb3B5OwotICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExp
c3RlbmVyIG9uY29weTsKLSAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0ZW5l
ciBvbmJlZm9yZXBhc3RlOwotICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExpc3Rl
bmVyIG9ucGFzdGU7Ci0gICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW1dIEV2ZW50TGlzdGVuZXIg
b25kcmFnZW50ZXI7Ci0gICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW1dIEV2ZW50TGlzdGVuZXIg
b25kcmFnb3ZlcjsKLSAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0ZW5lciBv
bmRyYWdsZWF2ZTsKLSAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0ZW5lciBv
bmRyb3A7Ci0gICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW1dIEV2ZW50TGlzdGVuZXIgb25kcmFn
c3RhcnQ7Ci0gICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW1dIEV2ZW50TGlzdGVuZXIgb25kcmFn
OwotICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExpc3RlbmVyIG9uZHJhZ2VuZDsK
LSAgICAgICAgYXR0cmlidXRlIFtEb250RW51bV0gRXZlbnRMaXN0ZW5lciBvbnJlc2V0OwotICAg
ICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExpc3RlbmVyIG9ucmVzaXplOwotICAgICAg
ICBhdHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExpc3RlbmVyIG9uc2Nyb2xsOwotICAgICAgICBh
dHRyaWJ1dGUgW0RvbnRFbnVtXSBFdmVudExpc3RlbmVyIG9uc2VhcmNoOwotICAgICAgICBhdHRy
aWJ1dGUgW0RvbnRFbnVtXSBFdmVudExpc3RlbmVyIG9uc2VsZWN0OwotICAgICAgICBhdHRyaWJ1
dGUgW0RvbnRFbnVtXSBFdmVudExpc3RlbmVyIG9uc2VsZWN0c3RhcnQ7Ci0gICAgICAgIGF0dHJp
YnV0ZSBbRG9udEVudW1dIEV2ZW50TGlzdGVuZXIgb25zdWJtaXQ7Ci0gICAgICAgIGF0dHJpYnV0
ZSBbRG9udEVudW1dIEV2ZW50TGlzdGVuZXIgb251bmxvYWQ7CisgICAgICAgIGF0dHJpYnV0ZSBb
RG9udEVudW0sIFByb3RlY3RlZExpc3RlbmVyXSBFdmVudExpc3RlbmVyIG9uYWJvcnQ7CisgICAg
ICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sIFByb3RlY3RlZExpc3RlbmVyXSBFdmVudExpc3RlbmVy
IG9uYmx1cjsKKyAgICAgICAgYXR0cmlidXRlIFtEb250RW51bSwgUHJvdGVjdGVkTGlzdGVuZXJd
IEV2ZW50TGlzdGVuZXIgb25jaGFuZ2U7CisgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sIFBy
b3RlY3RlZExpc3RlbmVyXSBFdmVudExpc3RlbmVyIG9uY2xpY2s7CisgICAgICAgIGF0dHJpYnV0
ZSBbRG9udEVudW0sIFByb3RlY3RlZExpc3RlbmVyXSBFdmVudExpc3RlbmVyIG9uY29udGV4dG1l
bnU7CisgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sIFByb3RlY3RlZExpc3RlbmVyXSBFdmVu
dExpc3RlbmVyIG9uZGJsY2xpY2s7CisgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sIFByb3Rl
Y3RlZExpc3RlbmVyXSBFdmVudExpc3RlbmVyIG9uZXJyb3I7CisgICAgICAgIGF0dHJpYnV0ZSBb
RG9udEVudW0sIFByb3RlY3RlZExpc3RlbmVyXSBFdmVudExpc3RlbmVyIG9uZm9jdXM7CisgICAg
ICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sIFByb3RlY3RlZExpc3RlbmVyXSBFdmVudExpc3RlbmVy
IG9uaW5wdXQ7CisgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sIFByb3RlY3RlZExpc3RlbmVy
XSBFdmVudExpc3RlbmVyIG9ua2V5ZG93bjsKKyAgICAgICAgYXR0cmlidXRlIFtEb250RW51bSwg
UHJvdGVjdGVkTGlzdGVuZXJdIEV2ZW50TGlzdGVuZXIgb25rZXlwcmVzczsKKyAgICAgICAgYXR0
cmlidXRlIFtEb250RW51bSwgUHJvdGVjdGVkTGlzdGVuZXJdIEV2ZW50TGlzdGVuZXIgb25rZXl1
cDsKKyAgICAgICAgYXR0cmlidXRlIFtEb250RW51bSwgUHJvdGVjdGVkTGlzdGVuZXJdIEV2ZW50
TGlzdGVuZXIgb25sb2FkOworICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLCBQcm90ZWN0ZWRM
aXN0ZW5lcl0gRXZlbnRMaXN0ZW5lciBvbm1vdXNlZG93bjsKKyAgICAgICAgYXR0cmlidXRlIFtE
b250RW51bSwgUHJvdGVjdGVkTGlzdGVuZXJdIEV2ZW50TGlzdGVuZXIgb25tb3VzZW1vdmU7Cisg
ICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sIFByb3RlY3RlZExpc3RlbmVyXSBFdmVudExpc3Rl
bmVyIG9ubW91c2VvdXQ7CisgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sIFByb3RlY3RlZExp
c3RlbmVyXSBFdmVudExpc3RlbmVyIG9ubW91c2VvdmVyOworICAgICAgICBhdHRyaWJ1dGUgW0Rv
bnRFbnVtLCBQcm90ZWN0ZWRMaXN0ZW5lcl0gRXZlbnRMaXN0ZW5lciBvbm1vdXNldXA7CisgICAg
ICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sIFByb3RlY3RlZExpc3RlbmVyXSBFdmVudExpc3RlbmVy
IG9ubW91c2V3aGVlbDsKKyAgICAgICAgYXR0cmlidXRlIFtEb250RW51bSwgUHJvdGVjdGVkTGlz
dGVuZXJdIEV2ZW50TGlzdGVuZXIgb25iZWZvcmVjdXQ7CisgICAgICAgIGF0dHJpYnV0ZSBbRG9u
dEVudW0sIFByb3RlY3RlZExpc3RlbmVyXSBFdmVudExpc3RlbmVyIG9uY3V0OworICAgICAgICBh
dHRyaWJ1dGUgW0RvbnRFbnVtLCBQcm90ZWN0ZWRMaXN0ZW5lcl0gRXZlbnRMaXN0ZW5lciBvbmJl
Zm9yZWNvcHk7CisgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sIFByb3RlY3RlZExpc3RlbmVy
XSBFdmVudExpc3RlbmVyIG9uY29weTsKKyAgICAgICAgYXR0cmlidXRlIFtEb250RW51bSwgUHJv
dGVjdGVkTGlzdGVuZXJdIEV2ZW50TGlzdGVuZXIgb25iZWZvcmVwYXN0ZTsKKyAgICAgICAgYXR0
cmlidXRlIFtEb250RW51bSwgUHJvdGVjdGVkTGlzdGVuZXJdIEV2ZW50TGlzdGVuZXIgb25wYXN0
ZTsKKyAgICAgICAgYXR0cmlidXRlIFtEb250RW51bSwgUHJvdGVjdGVkTGlzdGVuZXJdIEV2ZW50
TGlzdGVuZXIgb25kcmFnZW50ZXI7CisgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sIFByb3Rl
Y3RlZExpc3RlbmVyXSBFdmVudExpc3RlbmVyIG9uZHJhZ292ZXI7CisgICAgICAgIGF0dHJpYnV0
ZSBbRG9udEVudW0sIFByb3RlY3RlZExpc3RlbmVyXSBFdmVudExpc3RlbmVyIG9uZHJhZ2xlYXZl
OworICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLCBQcm90ZWN0ZWRMaXN0ZW5lcl0gRXZlbnRM
aXN0ZW5lciBvbmRyb3A7CisgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sIFByb3RlY3RlZExp
c3RlbmVyXSBFdmVudExpc3RlbmVyIG9uZHJhZ3N0YXJ0OworICAgICAgICBhdHRyaWJ1dGUgW0Rv
bnRFbnVtLCBQcm90ZWN0ZWRMaXN0ZW5lcl0gRXZlbnRMaXN0ZW5lciBvbmRyYWc7CisgICAgICAg
IGF0dHJpYnV0ZSBbRG9udEVudW0sIFByb3RlY3RlZExpc3RlbmVyXSBFdmVudExpc3RlbmVyIG9u
ZHJhZ2VuZDsKKyAgICAgICAgYXR0cmlidXRlIFtEb250RW51bSwgUHJvdGVjdGVkTGlzdGVuZXJd
IEV2ZW50TGlzdGVuZXIgb25yZXNldDsKKyAgICAgICAgYXR0cmlidXRlIFtEb250RW51bSwgUHJv
dGVjdGVkTGlzdGVuZXJdIEV2ZW50TGlzdGVuZXIgb25yZXNpemU7CisgICAgICAgIGF0dHJpYnV0
ZSBbRG9udEVudW0sIFByb3RlY3RlZExpc3RlbmVyXSBFdmVudExpc3RlbmVyIG9uc2Nyb2xsOwor
ICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLCBQcm90ZWN0ZWRMaXN0ZW5lcl0gRXZlbnRMaXN0
ZW5lciBvbnNlYXJjaDsKKyAgICAgICAgYXR0cmlidXRlIFtEb250RW51bSwgUHJvdGVjdGVkTGlz
dGVuZXJdIEV2ZW50TGlzdGVuZXIgb25zZWxlY3Q7CisgICAgICAgIGF0dHJpYnV0ZSBbRG9udEVu
dW0sIFByb3RlY3RlZExpc3RlbmVyXSBFdmVudExpc3RlbmVyIG9uc2VsZWN0c3RhcnQ7CisgICAg
ICAgIGF0dHJpYnV0ZSBbRG9udEVudW0sIFByb3RlY3RlZExpc3RlbmVyXSBFdmVudExpc3RlbmVy
IG9uc3VibWl0OworICAgICAgICBhdHRyaWJ1dGUgW0RvbnRFbnVtLCBQcm90ZWN0ZWRMaXN0ZW5l
cl0gRXZlbnRMaXN0ZW5lciBvbnVubG9hZDsKIAogICAgICAgICBbQ3VzdG9tXSB2b2lkIGFkZEV2
ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAogICAgICAgICAgICAgICAgICAgICAgICAg
ICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwgCkluZGV4OiBkb20vTWVz
c2FnZVBvcnQuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIGRvbS9NZXNzYWdlUG9ydC5pZGwJKHJldmlzaW9u
IDM3MTM5KQorKysgZG9tL01lc3NhZ2VQb3J0LmlkbAkod29ya2luZyBjb3B5KQpAQCAtMzgsOCAr
MzgsOCBAQCBtb2R1bGUgZXZlbnRzIHsKICAgICAgICAgdm9pZCBjbG9zZSgpOwogCiAgICAgICAg
IC8vIGV2ZW50IGhhbmRsZXIgYXR0cmlidXRlcwotICAgICAgICBhdHRyaWJ1dGUgW0N1c3RvbV0g
RXZlbnRMaXN0ZW5lciBvbm1lc3NhZ2U7Ci0gICAgICAgIGF0dHJpYnV0ZSBbQ3VzdG9tXSBFdmVu
dExpc3RlbmVyIG9uY2xvc2U7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ubWVz
c2FnZTsKKyAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25jbG9zZTsKIAogICAgICAg
ICAvLyBFdmVudFRhcmdldCBpbnRlcmZhY2UKICAgICAgICAgW0N1c3RvbV0gdm9pZCBhZGRFdmVu
dExpc3RlbmVyKGluIERPTVN0cmluZyB0eXBlLCAKSW5kZXg6IGxvYWRlci9hcHBjYWNoZS9ET01B
cHBsaWNhdGlvbkNhY2hlLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSBsb2FkZXIvYXBwY2FjaGUvRE9NQXBw
bGljYXRpb25DYWNoZS5pZGwJKHJldmlzaW9uIDM3MTM5KQorKysgbG9hZGVyL2FwcGNhY2hlL0RP
TUFwcGxpY2F0aW9uQ2FjaGUuaWRsCSh3b3JraW5nIGNvcHkpCkBAIC01MCwxNiArNTAsMTYgQEAg
bW9kdWxlIG9mZmxpbmUgewogICAgICAgICAgICAgcmFpc2VzKERPTUV4Y2VwdGlvbik7CiAgICAg
ICAgIFtDdXN0b21dIHZvaWQgcmVtb3ZlKGluIERPTVN0cmluZyB1cmkpCiAgICAgICAgICAgICBy
YWlzZXMoRE9NRXhjZXB0aW9uKTsKLSAgICAKKwogICAgICAgICAvLyBldmVudHMKLSAgICAgICAg
YXR0cmlidXRlIFtDdXN0b21dIEV2ZW50TGlzdGVuZXIgb25jaGVja2luZzsKLSAgICAgICAgYXR0
cmlidXRlIFtDdXN0b21dIEV2ZW50TGlzdGVuZXIgb25lcnJvcjsKLSAgICAgICAgYXR0cmlidXRl
IFtDdXN0b21dIEV2ZW50TGlzdGVuZXIgb25ub3VwZGF0ZTsKLSAgICAgICAgYXR0cmlidXRlIFtD
dXN0b21dIEV2ZW50TGlzdGVuZXIgb25kb3dubG9hZGluZzsKLSAgICAgICAgYXR0cmlidXRlIFtD
dXN0b21dIEV2ZW50TGlzdGVuZXIgb25wcm9ncmVzczsKLSAgICAgICAgYXR0cmlidXRlIFtDdXN0
b21dIEV2ZW50TGlzdGVuZXIgb251cGRhdGVyZWFkeTsKLSAgICAgICAgYXR0cmlidXRlIFtDdXN0
b21dIEV2ZW50TGlzdGVuZXIgb25jYWNoZWQ7Ci0gICAgCisgICAgICAgIGF0dHJpYnV0ZSBFdmVu
dExpc3RlbmVyIG9uY2hlY2tpbmc7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
ZXJyb3I7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ubm91cGRhdGU7CisgICAg
ICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uZG93bmxvYWRpbmc7CisgICAgICAgIGF0dHJp
YnV0ZSBFdmVudExpc3RlbmVyIG9ucHJvZ3Jlc3M7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExp
c3RlbmVyIG9udXBkYXRlcmVhZHk7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
Y2FjaGVkOworCiAgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQogICAgICAgICBbQ3Vz
dG9tXSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAogICAgICAgICAg
ICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgaW4gRXZlbnRMaXN0ZW5lciBsaXN0ZW5lciwg
CkluZGV4OiBwYWdlL0RPTVdpbmRvdy5jcHAKPT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PQotLS0gcGFnZS9ET01XaW5kb3cu
Y3BwCShyZXZpc2lvbiAzNzEzOSkKKysrIHBhZ2UvRE9NV2luZG93LmNwcAkod29ya2luZyBjb3B5
KQpAQCAtMzYsNiArMzYsOCBAQAogI2luY2x1ZGUgIkRPTVNlbGVjdGlvbi5oIgogI2luY2x1ZGUg
IkRvY3VtZW50LmgiCiAjaW5jbHVkZSAiRWxlbWVudC5oIgorI2luY2x1ZGUgIkV2ZW50TGlzdGVu
ZXIuaCIKKyNpbmNsdWRlICJFdmVudE5hbWVzLmgiCiAjaW5jbHVkZSAiRXhjZXB0aW9uQ29kZS5o
IgogI2luY2x1ZGUgIkZsb2F0UmVjdC5oIgogI2luY2x1ZGUgIkZyYW1lLmgiCkBAIC03Niw2ICs3
OCw4IEBAIHVzaW5nIHN0ZDo6bWF4OwogCiBuYW1lc3BhY2UgV2ViQ29yZSB7CiAKK3VzaW5nIG5h
bWVzcGFjZSBFdmVudE5hbWVzOworCiBjbGFzcyBQb3N0TWVzc2FnZVRpbWVyIDogcHVibGljIFRp
bWVyQmFzZSB7CiBwdWJsaWM6CiAgICAgUG9zdE1lc3NhZ2VUaW1lcihET01XaW5kb3cqIHdpbmRv
dywgUGFzc1JlZlB0cjxNZXNzYWdlRXZlbnQ+IGV2ZW50LCBTZWN1cml0eU9yaWdpbiogdGFyZ2V0
T3JpZ2luKQpAQCAtOTE5LDQgKzkyMywzMTAgQEAgdm9pZCBET01XaW5kb3c6OnJlc2l6ZVRvKGZs
b2F0IHdpZHRoLCBmbAogICAgIHBhZ2UtPmNocm9tZSgpLT5zZXRXaW5kb3dSZWN0KGZyKTsKIH0K
IAoraW5saW5lIHZvaWQgRE9NV2luZG93OjpzZXRFdmVudExpc3RlbmVyRm9yVHlwZShjb25zdCBB
dG9taWNTdHJpbmcmIGV2ZW50VHlwZSwgUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExp
c3RlbmVyKQoreworICAgIERvY3VtZW50KiBkb2N1bWVudCA9IHRoaXMtPmRvY3VtZW50KCk7Cisg
ICAgaWYgKCFkb2N1bWVudCkKKyAgICAgICAgcmV0dXJuOworICAgIGRvY3VtZW50LT5zZXRXaW5k
b3dFdmVudExpc3RlbmVyRm9yVHlwZShldmVudFR5cGUsIGV2ZW50TGlzdGVuZXIpOworfQorCitp
bmxpbmUgRXZlbnRMaXN0ZW5lciogRE9NV2luZG93OjpldmVudExpc3RlbmVyRm9yVHlwZShjb25z
dCBBdG9taWNTdHJpbmcmIGV2ZW50VHlwZSkgY29uc3QKK3sKKyAgICBEb2N1bWVudCogZG9jdW1l
bnQgPSB0aGlzLT5kb2N1bWVudCgpOworICAgIGlmICghZG9jdW1lbnQpCisgICAgICAgIHJldHVy
biAwOworICAgIHJldHVybiBkb2N1bWVudC0+d2luZG93RXZlbnRMaXN0ZW5lckZvclR5cGUoZXZl
bnRUeXBlKTsKK30KKworRXZlbnRMaXN0ZW5lciogRE9NV2luZG93OjpvbmFib3J0KCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZXZlbnRMaXN0ZW5lckZvclR5cGUoYWJvcnRFdmVudCk7Cit9CisKK3Zv
aWQgRE9NV2luZG93OjpzZXRPbmFib3J0KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRM
aXN0ZW5lcikKK3sKKyAgICBzZXRFdmVudExpc3RlbmVyRm9yVHlwZShhYm9ydEV2ZW50LCBldmVu
dExpc3RlbmVyKTsKK30KKworRXZlbnRMaXN0ZW5lciogRE9NV2luZG93OjpvbmJsdXIoKSBjb25z
dAoreworICAgIHJldHVybiBldmVudExpc3RlbmVyRm9yVHlwZShibHVyRXZlbnQpOworfQorCit2
b2lkIERPTVdpbmRvdzo6c2V0T25ibHVyKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRM
aXN0ZW5lcikKK3sKKyAgICBzZXRFdmVudExpc3RlbmVyRm9yVHlwZShibHVyRXZlbnQsIGV2ZW50
TGlzdGVuZXIpOworfQorCitFdmVudExpc3RlbmVyKiBET01XaW5kb3c6Om9uY2hhbmdlKCkgY29u
c3QKK3sKKyAgICByZXR1cm4gZXZlbnRMaXN0ZW5lckZvclR5cGUoY2hhbmdlRXZlbnQpOworfQor
Cit2b2lkIERPTVdpbmRvdzo6c2V0T25jaGFuZ2UoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBl
dmVudExpc3RlbmVyKQoreworICAgIHNldEV2ZW50TGlzdGVuZXJGb3JUeXBlKGNoYW5nZUV2ZW50
LCBldmVudExpc3RlbmVyKTsKK30KKworRXZlbnRMaXN0ZW5lciogRE9NV2luZG93OjpvbmNsaWNr
KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnRMaXN0ZW5lckZvclR5cGUoY2xpY2tFdmVudCk7
Cit9CisKK3ZvaWQgRE9NV2luZG93OjpzZXRPbmNsaWNrKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4gZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBzZXRFdmVudExpc3RlbmVyRm9yVHlwZShjbGlja0V2
ZW50LCBldmVudExpc3RlbmVyKTsKK30KKworRXZlbnRMaXN0ZW5lciogRE9NV2luZG93OjpvbmRi
bGNsaWNrKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnRMaXN0ZW5lckZvclR5cGUoZGJsY2xp
Y2tFdmVudCk7Cit9CisKK3ZvaWQgRE9NV2luZG93OjpzZXRPbmRibGNsaWNrKFBhc3NSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBzZXRFdmVudExpc3RlbmVyRm9y
VHlwZShkYmxjbGlja0V2ZW50LCBldmVudExpc3RlbmVyKTsKK30KKworRXZlbnRMaXN0ZW5lciog
RE9NV2luZG93OjpvbmVycm9yKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnRMaXN0ZW5lckZv
clR5cGUoZXJyb3JFdmVudCk7Cit9CisKK3ZvaWQgRE9NV2luZG93OjpzZXRPbmVycm9yKFBhc3NS
ZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBzZXRFdmVudExpc3Rl
bmVyRm9yVHlwZShlcnJvckV2ZW50LCBldmVudExpc3RlbmVyKTsKK30KKworRXZlbnRMaXN0ZW5l
ciogRE9NV2luZG93OjpvbmZvY3VzKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnRMaXN0ZW5l
ckZvclR5cGUoZm9jdXNFdmVudCk7Cit9CisKK3ZvaWQgRE9NV2luZG93OjpzZXRPbmZvY3VzKFBh
c3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBzZXRFdmVudExp
c3RlbmVyRm9yVHlwZShmb2N1c0V2ZW50LCBldmVudExpc3RlbmVyKTsKK30KKworRXZlbnRMaXN0
ZW5lciogRE9NV2luZG93OjpvbmtleWRvd24oKSBjb25zdAoreworICAgIHJldHVybiBldmVudExp
c3RlbmVyRm9yVHlwZShrZXlkb3duRXZlbnQpOworfQorCit2b2lkIERPTVdpbmRvdzo6c2V0T25r
ZXlkb3duKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBz
ZXRFdmVudExpc3RlbmVyRm9yVHlwZShrZXlkb3duRXZlbnQsIGV2ZW50TGlzdGVuZXIpOworfQor
CitFdmVudExpc3RlbmVyKiBET01XaW5kb3c6Om9ua2V5cHJlc3MoKSBjb25zdAoreworICAgIHJl
dHVybiBldmVudExpc3RlbmVyRm9yVHlwZShrZXlwcmVzc0V2ZW50KTsKK30KKwordm9pZCBET01X
aW5kb3c6OnNldE9ua2V5cHJlc3MoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3Rl
bmVyKQoreworICAgIHNldEV2ZW50TGlzdGVuZXJGb3JUeXBlKGtleXByZXNzRXZlbnQsIGV2ZW50
TGlzdGVuZXIpOworfQorCitFdmVudExpc3RlbmVyKiBET01XaW5kb3c6Om9ua2V5dXAoKSBjb25z
dAoreworICAgIHJldHVybiBldmVudExpc3RlbmVyRm9yVHlwZShrZXl1cEV2ZW50KTsKK30KKwor
dm9pZCBET01XaW5kb3c6OnNldE9ua2V5dXAoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVu
dExpc3RlbmVyKQoreworICAgIHNldEV2ZW50TGlzdGVuZXJGb3JUeXBlKGtleXVwRXZlbnQsIGV2
ZW50TGlzdGVuZXIpOworfQorCitFdmVudExpc3RlbmVyKiBET01XaW5kb3c6Om9ubG9hZCgpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TGlzdGVuZXJGb3JUeXBlKGxvYWRFdmVudCk7Cit9CisK
K3ZvaWQgRE9NV2luZG93OjpzZXRPbmxvYWQoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVu
dExpc3RlbmVyKQoreworICAgIHNldEV2ZW50TGlzdGVuZXJGb3JUeXBlKGxvYWRFdmVudCwgZXZl
bnRMaXN0ZW5lcik7Cit9CisKK0V2ZW50TGlzdGVuZXIqIERPTVdpbmRvdzo6b25tb3VzZWRvd24o
KSBjb25zdAoreworICAgIHJldHVybiBldmVudExpc3RlbmVyRm9yVHlwZShtb3VzZWRvd25FdmVu
dCk7Cit9CisKK3ZvaWQgRE9NV2luZG93OjpzZXRPbm1vdXNlZG93bihQYXNzUmVmUHRyPEV2ZW50
TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpCit7CisgICAgc2V0RXZlbnRMaXN0ZW5lckZvclR5cGUo
bW91c2Vkb3duRXZlbnQsIGV2ZW50TGlzdGVuZXIpOworfQorCitFdmVudExpc3RlbmVyKiBET01X
aW5kb3c6Om9ubW91c2Vtb3ZlKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnRMaXN0ZW5lckZv
clR5cGUobW91c2Vtb3ZlRXZlbnQpOworfQorCit2b2lkIERPTVdpbmRvdzo6c2V0T25tb3VzZW1v
dmUoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKQoreworICAgIHNldEV2
ZW50TGlzdGVuZXJGb3JUeXBlKG1vdXNlbW92ZUV2ZW50LCBldmVudExpc3RlbmVyKTsKK30KKwor
RXZlbnRMaXN0ZW5lciogRE9NV2luZG93Ojpvbm1vdXNlb3V0KCkgY29uc3QKK3sKKyAgICByZXR1
cm4gZXZlbnRMaXN0ZW5lckZvclR5cGUobW91c2VvdXRFdmVudCk7Cit9CisKK3ZvaWQgRE9NV2lu
ZG93OjpzZXRPbm1vdXNlb3V0KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5l
cikKK3sKKyAgICBzZXRFdmVudExpc3RlbmVyRm9yVHlwZShtb3VzZW91dEV2ZW50LCBldmVudExp
c3RlbmVyKTsKK30KKworRXZlbnRMaXN0ZW5lciogRE9NV2luZG93Ojpvbm1vdXNlb3ZlcigpIGNv
bnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TGlzdGVuZXJGb3JUeXBlKG1vdXNlb3ZlckV2ZW50KTsK
K30KKwordm9pZCBET01XaW5kb3c6OnNldE9ubW91c2VvdmVyKFBhc3NSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBzZXRFdmVudExpc3RlbmVyRm9yVHlwZShtb3Vz
ZW92ZXJFdmVudCwgZXZlbnRMaXN0ZW5lcik7Cit9CisKK0V2ZW50TGlzdGVuZXIqIERPTVdpbmRv
dzo6b25tb3VzZXVwKCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnRMaXN0ZW5lckZvclR5cGUo
bW91c2V1cEV2ZW50KTsKK30KKwordm9pZCBET01XaW5kb3c6OnNldE9ubW91c2V1cChQYXNzUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpCit7CisgICAgc2V0RXZlbnRMaXN0ZW5l
ckZvclR5cGUobW91c2V1cEV2ZW50LCBldmVudExpc3RlbmVyKTsKK30KKworRXZlbnRMaXN0ZW5l
ciogRE9NV2luZG93Ojpvbm1vdXNld2hlZWwoKSBjb25zdAoreworICAgIHJldHVybiBldmVudExp
c3RlbmVyRm9yVHlwZShtb3VzZXdoZWVsRXZlbnQpOworfQorCit2b2lkIERPTVdpbmRvdzo6c2V0
T25tb3VzZXdoZWVsKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sK
KyAgICBzZXRFdmVudExpc3RlbmVyRm9yVHlwZShtb3VzZXdoZWVsRXZlbnQsIGV2ZW50TGlzdGVu
ZXIpOworfQorCitFdmVudExpc3RlbmVyKiBET01XaW5kb3c6Om9ucmVzZXQoKSBjb25zdAorewor
ICAgIHJldHVybiBldmVudExpc3RlbmVyRm9yVHlwZShyZXNldEV2ZW50KTsKK30KKwordm9pZCBE
T01XaW5kb3c6OnNldE9ucmVzZXQoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3Rl
bmVyKQoreworICAgIHNldEV2ZW50TGlzdGVuZXJGb3JUeXBlKHJlc2V0RXZlbnQsIGV2ZW50TGlz
dGVuZXIpOworfQorCitFdmVudExpc3RlbmVyKiBET01XaW5kb3c6Om9ucmVzaXplKCkgY29uc3QK
K3sKKyAgICByZXR1cm4gZXZlbnRMaXN0ZW5lckZvclR5cGUocmVzaXplRXZlbnQpOworfQorCit2
b2lkIERPTVdpbmRvdzo6c2V0T25yZXNpemUoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBldmVu
dExpc3RlbmVyKQoreworICAgIHNldEV2ZW50TGlzdGVuZXJGb3JUeXBlKHJlc2l6ZUV2ZW50LCBl
dmVudExpc3RlbmVyKTsKK30KKworRXZlbnRMaXN0ZW5lciogRE9NV2luZG93OjpvbnNjcm9sbCgp
IGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TGlzdGVuZXJGb3JUeXBlKHNjcm9sbEV2ZW50KTsK
K30KKwordm9pZCBET01XaW5kb3c6OnNldE9uc2Nyb2xsKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5l
cj4gZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBzZXRFdmVudExpc3RlbmVyRm9yVHlwZShzY3JvbGxF
dmVudCwgZXZlbnRMaXN0ZW5lcik7Cit9CisKK0V2ZW50TGlzdGVuZXIqIERPTVdpbmRvdzo6b25z
ZWFyY2goKSBjb25zdAoreworICAgIHJldHVybiBldmVudExpc3RlbmVyRm9yVHlwZShzZWFyY2hF
dmVudCk7Cit9CisKK3ZvaWQgRE9NV2luZG93OjpzZXRPbnNlYXJjaChQYXNzUmVmUHRyPEV2ZW50
TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpCit7CisgICAgc2V0RXZlbnRMaXN0ZW5lckZvclR5cGUo
c2VhcmNoRXZlbnQsIGV2ZW50TGlzdGVuZXIpOworfQorCitFdmVudExpc3RlbmVyKiBET01XaW5k
b3c6Om9uc2VsZWN0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnRMaXN0ZW5lckZvclR5cGUo
c2VsZWN0RXZlbnQpOworfQorCit2b2lkIERPTVdpbmRvdzo6c2V0T25zZWxlY3QoUGFzc1JlZlB0
cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKQoreworICAgIHNldEV2ZW50TGlzdGVuZXJG
b3JUeXBlKHNlbGVjdEV2ZW50LCBldmVudExpc3RlbmVyKTsKK30KKworRXZlbnRMaXN0ZW5lciog
RE9NV2luZG93OjpvbnN1Ym1pdCgpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2ZW50TGlzdGVuZXJG
b3JUeXBlKHN1Ym1pdEV2ZW50KTsKK30KKwordm9pZCBET01XaW5kb3c6OnNldE9uc3VibWl0KFBh
c3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBzZXRFdmVudExp
c3RlbmVyRm9yVHlwZShzdWJtaXRFdmVudCwgZXZlbnRMaXN0ZW5lcik7Cit9CisKK0V2ZW50TGlz
dGVuZXIqIERPTVdpbmRvdzo6b251bmxvYWQoKSBjb25zdAoreworICAgIHJldHVybiBldmVudExp
c3RlbmVyRm9yVHlwZSh1bmxvYWRFdmVudCk7Cit9CisKK3ZvaWQgRE9NV2luZG93OjpzZXRPbnVu
bG9hZChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpCit7CisgICAgc2V0
RXZlbnRMaXN0ZW5lckZvclR5cGUodW5sb2FkRXZlbnQsIGV2ZW50TGlzdGVuZXIpOworfQorCitF
dmVudExpc3RlbmVyKiBET01XaW5kb3c6Om9uYmVmb3JldW5sb2FkKCkgY29uc3QKK3sKKyAgICBy
ZXR1cm4gZXZlbnRMaXN0ZW5lckZvclR5cGUoYmVmb3JldW5sb2FkRXZlbnQpOworfQorCit2b2lk
IERPTVdpbmRvdzo6c2V0T25iZWZvcmV1bmxvYWQoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPiBl
dmVudExpc3RlbmVyKQoreworICAgIHNldEV2ZW50TGlzdGVuZXJGb3JUeXBlKGJlZm9yZXVubG9h
ZEV2ZW50LCBldmVudExpc3RlbmVyKTsKK30KKworRXZlbnRMaXN0ZW5lciogRE9NV2luZG93Ojpv
bndlYmtpdGFuaW1hdGlvbnN0YXJ0KCkgY29uc3QKK3sKKyAgICByZXR1cm4gZXZlbnRMaXN0ZW5l
ckZvclR5cGUod2Via2l0QW5pbWF0aW9uU3RhcnRFdmVudCk7Cit9CisKK3ZvaWQgRE9NV2luZG93
OjpzZXRPbndlYmtpdGFuaW1hdGlvbnN0YXJ0KFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4gZXZl
bnRMaXN0ZW5lcikKK3sKKyAgICBzZXRFdmVudExpc3RlbmVyRm9yVHlwZSh3ZWJraXRBbmltYXRp
b25TdGFydEV2ZW50LCBldmVudExpc3RlbmVyKTsKK30KKworRXZlbnRMaXN0ZW5lciogRE9NV2lu
ZG93OjpvbndlYmtpdGFuaW1hdGlvbml0ZXJhdGlvbigpIGNvbnN0Cit7CisgICAgcmV0dXJuIGV2
ZW50TGlzdGVuZXJGb3JUeXBlKHdlYmtpdEFuaW1hdGlvbkl0ZXJhdGlvbkV2ZW50KTsKK30KKwor
dm9pZCBET01XaW5kb3c6OnNldE9ud2Via2l0YW5pbWF0aW9uaXRlcmF0aW9uKFBhc3NSZWZQdHI8
RXZlbnRMaXN0ZW5lcj4gZXZlbnRMaXN0ZW5lcikKK3sKKyAgICBzZXRFdmVudExpc3RlbmVyRm9y
VHlwZSh3ZWJraXRBbmltYXRpb25JdGVyYXRpb25FdmVudCwgZXZlbnRMaXN0ZW5lcik7Cit9CisK
K0V2ZW50TGlzdGVuZXIqIERPTVdpbmRvdzo6b253ZWJraXRhbmltYXRpb25lbmQoKSBjb25zdAor
eworICAgIHJldHVybiBldmVudExpc3RlbmVyRm9yVHlwZSh3ZWJraXRBbmltYXRpb25FbmRFdmVu
dCk7Cit9CisKK3ZvaWQgRE9NV2luZG93OjpzZXRPbndlYmtpdGFuaW1hdGlvbmVuZChQYXNzUmVm
UHRyPEV2ZW50TGlzdGVuZXI+IGV2ZW50TGlzdGVuZXIpCit7CisgICAgc2V0RXZlbnRMaXN0ZW5l
ckZvclR5cGUod2Via2l0QW5pbWF0aW9uRW5kRXZlbnQsIGV2ZW50TGlzdGVuZXIpOworfQorCitF
dmVudExpc3RlbmVyKiBET01XaW5kb3c6Om9ud2Via2l0dHJhbnNpdGlvbmVuZCgpIGNvbnN0Cit7
CisgICAgcmV0dXJuIGV2ZW50TGlzdGVuZXJGb3JUeXBlKHdlYmtpdFRyYW5zaXRpb25FbmRFdmVu
dCk7Cit9CisKK3ZvaWQgRE9NV2luZG93OjpzZXRPbndlYmtpdHRyYW5zaXRpb25lbmQoUGFzc1Jl
ZlB0cjxFdmVudExpc3RlbmVyPiBldmVudExpc3RlbmVyKQoreworICAgIHNldEV2ZW50TGlzdGVu
ZXJGb3JUeXBlKHdlYmtpdFRyYW5zaXRpb25FbmRFdmVudCwgZXZlbnRMaXN0ZW5lcik7Cit9CisK
IH0gLy8gbmFtZXNwYWNlIFdlYkNvcmUKSW5kZXg6IHBhZ2UvRE9NV2luZG93LmgKPT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PQotLS0gcGFnZS9ET01XaW5kb3cuaAkocmV2aXNpb24gMzcxMzkpCisrKyBwYWdlL0RPTVdpbmRv
dy5oCSh3b3JraW5nIGNvcHkpCkBAIC00Myw2ICs0Myw3IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsK
ICAgICBjbGFzcyBEYXRhYmFzZTsKICAgICBjbGFzcyBEb2N1bWVudDsKICAgICBjbGFzcyBFbGVt
ZW50OworICAgIGNsYXNzIEV2ZW50TGlzdGVuZXI7CiAgICAgY2xhc3MgRmxvYXRSZWN0OwogICAg
IGNsYXNzIEZyYW1lOwogICAgIGNsYXNzIEhpc3Rvcnk7CkBAIC0xODksNiArMTkwLDY1IEBAIG5h
bWVzcGFjZSBXZWJDb3JlIHsKICAgICAgICAgdm9pZCByZXNpemVCeShmbG9hdCB4LCBmbG9hdCB5
KSBjb25zdDsKICAgICAgICAgdm9pZCByZXNpemVUbyhmbG9hdCB3aWR0aCwgZmxvYXQgaGVpZ2h0
KSBjb25zdDsKIAorICAgICAgICBFdmVudExpc3RlbmVyKiBvbmFib3J0KCkgY29uc3Q7CisgICAg
ICAgIHZvaWQgc2V0T25hYm9ydChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKKyAgICAgICAg
RXZlbnRMaXN0ZW5lciogb25ibHVyKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0T25ibHVyKFBh
c3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOworICAgICAgICBFdmVudExpc3RlbmVyKiBvbmNoYW5n
ZSgpIGNvbnN0OworICAgICAgICB2b2lkIHNldE9uY2hhbmdlKFBhc3NSZWZQdHI8RXZlbnRMaXN0
ZW5lcj4pOworICAgICAgICBFdmVudExpc3RlbmVyKiBvbmNsaWNrKCkgY29uc3Q7CisgICAgICAg
IHZvaWQgc2V0T25jbGljayhQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKKyAgICAgICAgRXZl
bnRMaXN0ZW5lciogb25kYmxjbGljaygpIGNvbnN0OworICAgICAgICB2b2lkIHNldE9uZGJsY2xp
Y2soUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9u
ZXJyb3IoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRPbmVycm9yKFBhc3NSZWZQdHI8RXZlbnRM
aXN0ZW5lcj4pOworICAgICAgICBFdmVudExpc3RlbmVyKiBvbmZvY3VzKCkgY29uc3Q7CisgICAg
ICAgIHZvaWQgc2V0T25mb2N1cyhQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKKyAgICAgICAg
RXZlbnRMaXN0ZW5lciogb25rZXlkb3duKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0T25rZXlk
b3duKFBhc3NSZWZQdHI8RXZlbnRMaXN0ZW5lcj4pOworICAgICAgICBFdmVudExpc3RlbmVyKiBv
bmtleXByZXNzKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0T25rZXlwcmVzcyhQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+KTsKKyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25rZXl1cCgpIGNvbnN0
OworICAgICAgICB2b2lkIHNldE9ua2V5dXAoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7Cisg
ICAgICAgIEV2ZW50TGlzdGVuZXIqIG9ubG9hZCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldE9u
bG9hZChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKKyAgICAgICAgRXZlbnRMaXN0ZW5lciog
b25tb3VzZWRvd24oKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRPbm1vdXNlZG93bihQYXNzUmVm
UHRyPEV2ZW50TGlzdGVuZXI+KTsKKyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25tb3VzZW1vdmUo
KSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRPbm1vdXNlbW92ZShQYXNzUmVmUHRyPEV2ZW50TGlz
dGVuZXI+KTsKKyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25tb3VzZW91dCgpIGNvbnN0OworICAg
ICAgICB2b2lkIHNldE9ubW91c2VvdXQoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7CisgICAg
ICAgIEV2ZW50TGlzdGVuZXIqIG9ubW91c2VvdmVyKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0
T25tb3VzZW92ZXIoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7CisgICAgICAgIEV2ZW50TGlz
dGVuZXIqIG9ubW91c2V1cCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldE9ubW91c2V1cChQYXNz
UmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKKyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25tb3VzZXdo
ZWVsKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0T25tb3VzZXdoZWVsKFBhc3NSZWZQdHI8RXZl
bnRMaXN0ZW5lcj4pOworICAgICAgICBFdmVudExpc3RlbmVyKiBvbnJlc2V0KCkgY29uc3Q7Cisg
ICAgICAgIHZvaWQgc2V0T25yZXNldChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKKyAgICAg
ICAgRXZlbnRMaXN0ZW5lciogb25yZXNpemUoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRPbnJl
c2l6ZShQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKKyAgICAgICAgRXZlbnRMaXN0ZW5lciog
b25zY3JvbGwoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRPbnNjcm9sbChQYXNzUmVmUHRyPEV2
ZW50TGlzdGVuZXI+KTsKKyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25zZWFyY2goKSBjb25zdDsK
KyAgICAgICAgdm9pZCBzZXRPbnNlYXJjaChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKKyAg
ICAgICAgRXZlbnRMaXN0ZW5lciogb25zZWxlY3QoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRP
bnNlbGVjdChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKKyAgICAgICAgRXZlbnRMaXN0ZW5l
ciogb25zdWJtaXQoKSBjb25zdDsKKyAgICAgICAgdm9pZCBzZXRPbnN1Ym1pdChQYXNzUmVmUHRy
PEV2ZW50TGlzdGVuZXI+KTsKKyAgICAgICAgRXZlbnRMaXN0ZW5lciogb251bmxvYWQoKSBjb25z
dDsKKyAgICAgICAgdm9pZCBzZXRPbnVubG9hZChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsK
KyAgICAgICAgRXZlbnRMaXN0ZW5lciogb25iZWZvcmV1bmxvYWQoKSBjb25zdDsKKyAgICAgICAg
dm9pZCBzZXRPbmJlZm9yZXVubG9hZChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKKyAgICAg
ICAgRXZlbnRMaXN0ZW5lciogb253ZWJraXRhbmltYXRpb25zdGFydCgpIGNvbnN0OworICAgICAg
ICB2b2lkIHNldE9ud2Via2l0YW5pbWF0aW9uc3RhcnQoUGFzc1JlZlB0cjxFdmVudExpc3RlbmVy
Pik7CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9ud2Via2l0YW5pbWF0aW9uaXRlcmF0aW9uKCkg
Y29uc3Q7CisgICAgICAgIHZvaWQgc2V0T253ZWJraXRhbmltYXRpb25pdGVyYXRpb24oUGFzc1Jl
ZlB0cjxFdmVudExpc3RlbmVyPik7CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9ud2Via2l0YW5p
bWF0aW9uZW5kKCkgY29uc3Q7CisgICAgICAgIHZvaWQgc2V0T253ZWJraXRhbmltYXRpb25lbmQo
UGFzc1JlZlB0cjxFdmVudExpc3RlbmVyPik7CisgICAgICAgIEV2ZW50TGlzdGVuZXIqIG9ud2Vi
a2l0dHJhbnNpdGlvbmVuZCgpIGNvbnN0OworICAgICAgICB2b2lkIHNldE9ud2Via2l0dHJhbnNp
dGlvbmVuZChQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsKKwogICAgICAgICAvLyBUaGVzZSBt
ZXRob2RzIGFyZSB1c2VkIGZvciBHQyBtYXJraW5nLiBTZWUgSlNET01XaW5kb3c6Om1hcmsoKSBp
bgogICAgICAgICAvLyBKU0RPTVdpbmRvd0N1c3RvbS5jcHAuCiAgICAgICAgIFNjcmVlbiogb3B0
aW9uYWxTY3JlZW4oKSBjb25zdCB7IHJldHVybiBtX3NjcmVlbi5nZXQoKTsgfQpAQCAtMjE0LDYg
KzI3NCw5IEBAIG5hbWVzcGFjZSBXZWJDb3JlIHsKICAgICBwcml2YXRlOgogICAgICAgICBET01X
aW5kb3coRnJhbWUqKTsKIAorICAgICAgICB2b2lkIHNldEV2ZW50TGlzdGVuZXJGb3JUeXBlKGNv
bnN0IEF0b21pY1N0cmluZyYgZXZlbnRUeXBlLCBQYXNzUmVmUHRyPEV2ZW50TGlzdGVuZXI+KTsK
KyAgICAgICAgRXZlbnRMaXN0ZW5lciogZXZlbnRMaXN0ZW5lckZvclR5cGUoY29uc3QgQXRvbWlj
U3RyaW5nJiBldmVudFR5cGUpIGNvbnN0OworCiAgICAgICAgIFJlZlB0cjxTZWN1cml0eU9yaWdp
bj4gbV9zZWN1cml0eU9yaWdpbjsKICAgICAgICAgS1VSTCBtX3VybDsKIApJbmRleDogcGFnZS9E
T01XaW5kb3cuaWRsCj09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT0KLS0tIHBhZ2UvRE9NV2luZG93LmlkbAkocmV2aXNpb24g
MzcxMzkpCisrKyBwYWdlL0RPTVdpbmRvdy5pZGwJKHdvcmtpbmcgY29weSkKQEAgLTM4LDcgKzM4
LDYgQEAgbW9kdWxlIHdpbmRvdyB7CiAgICAgICAgIEN1c3RvbU1hcmtGdW5jdGlvbiwKICAgICAg
ICAgQ3VzdG9tTmF0aXZlQ29udmVydGVyLAogICAgICAgICBDdXN0b21QdXRGdW5jdGlvbiwKLSAg
ICAgICAgQ3VzdG9tTGlzdGVuZXJzLAogICAgICAgICBHZW5lcmF0ZU5hdGl2ZUNvbnZlcnRlciwK
ICAgICAgICAgTGVnYWN5UGFyZW50PUpTRE9NV2luZG93QmFzZQogICAgIF0gRE9NV2luZG93IHsK
QEAgLTE1NSwzNSArMTU0LDM1IEBAIG1vZHVsZSB3aW5kb3cgewogICAgICAgICBbRG9Ob3RDaGVj
a0RvbWFpblNlY3VyaXR5LCBDdXN0b21dIHZvaWQgcG9zdE1lc3NhZ2UoaW4gRE9NU3RyaW5nIG1l
c3NhZ2UsIGluIFtPcHRpb25hbF0gTWVzc2FnZVBvcnQgbWVzc2FnZVBvcnQsIGluIERPTVN0cmlu
ZyB0YXJnZXRPcmlnaW4pCiAgICAgICAgICAgICByYWlzZXMoRE9NRXhjZXB0aW9uKTsKIAotICAg
ICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFib3J0OwotICAgICAgICBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbmJsdXI7Ci0gICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
Y2hhbmdlOwotICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmNsaWNrOwotICAgICAg
ICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmRibGNsaWNrOwotICAgICAgICBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbmVycm9yOwotICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBv
bmZvY3VzOwotICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmtleWRvd247Ci0gICAg
ICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ua2V5cHJlc3M7Ci0gICAgICAgIGF0dHJpYnV0
ZSBFdmVudExpc3RlbmVyIG9ua2V5dXA7Ci0gICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVy
IG9ubG9hZDsKLSAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25tb3VzZWRvd247Ci0g
ICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ubW91c2Vtb3ZlOwotICAgICAgICBhdHRy
aWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm1vdXNlb3V0OwotICAgICAgICBhdHRyaWJ1dGUgRXZlbnRM
aXN0ZW5lciBvbm1vdXNlb3ZlcjsKLSAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25t
b3VzZXVwOwotICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbm1vdXNld2hlZWw7Ci0g
ICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ucmVzZXQ7Ci0gICAgICAgIGF0dHJpYnV0
ZSBFdmVudExpc3RlbmVyIG9ucmVzaXplOwotICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbnNjcm9sbDsKLSAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVuZXIgb25zZWFyY2g7Ci0g
ICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uc2VsZWN0OwotICAgICAgICBhdHRyaWJ1
dGUgRXZlbnRMaXN0ZW5lciBvbnN1Ym1pdDsKLSAgICAgICAgYXR0cmlidXRlIEV2ZW50TGlzdGVu
ZXIgb251bmxvYWQ7Ci0gICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9uYmVmb3JldW5s
b2FkOwotICAgICAgICBhdHRyaWJ1dGUgW0N1c3RvbV0gRXZlbnRMaXN0ZW5lciBvbndlYmtpdGFu
aW1hdGlvbnN0YXJ0OwotICAgICAgICBhdHRyaWJ1dGUgW0N1c3RvbV0gRXZlbnRMaXN0ZW5lciBv
bndlYmtpdGFuaW1hdGlvbml0ZXJhdGlvbjsKLSAgICAgICAgYXR0cmlidXRlIFtDdXN0b21dIEV2
ZW50TGlzdGVuZXIgb253ZWJraXRhbmltYXRpb25lbmQ7Ci0gICAgICAgIGF0dHJpYnV0ZSBbQ3Vz
dG9tXSBFdmVudExpc3RlbmVyIG9ud2Via2l0dHJhbnNpdGlvbmVuZDsKKyAgICAgICAgYXR0cmli
dXRlIFtQcm90ZWN0ZWRMaXN0ZW5lcl0gRXZlbnRMaXN0ZW5lciBvbmFib3J0OworICAgICAgICBh
dHRyaWJ1dGUgW1Byb3RlY3RlZExpc3RlbmVyXSBFdmVudExpc3RlbmVyIG9uYmx1cjsKKyAgICAg
ICAgYXR0cmlidXRlIFtQcm90ZWN0ZWRMaXN0ZW5lcl0gRXZlbnRMaXN0ZW5lciBvbmNoYW5nZTsK
KyAgICAgICAgYXR0cmlidXRlIFtQcm90ZWN0ZWRMaXN0ZW5lcl0gRXZlbnRMaXN0ZW5lciBvbmNs
aWNrOworICAgICAgICBhdHRyaWJ1dGUgW1Byb3RlY3RlZExpc3RlbmVyXSBFdmVudExpc3RlbmVy
IG9uZGJsY2xpY2s7CisgICAgICAgIGF0dHJpYnV0ZSBbUHJvdGVjdGVkTGlzdGVuZXJdIEV2ZW50
TGlzdGVuZXIgb25lcnJvcjsKKyAgICAgICAgYXR0cmlidXRlIFtQcm90ZWN0ZWRMaXN0ZW5lcl0g
RXZlbnRMaXN0ZW5lciBvbmZvY3VzOworICAgICAgICBhdHRyaWJ1dGUgW1Byb3RlY3RlZExpc3Rl
bmVyXSBFdmVudExpc3RlbmVyIG9ua2V5ZG93bjsKKyAgICAgICAgYXR0cmlidXRlIFtQcm90ZWN0
ZWRMaXN0ZW5lcl0gRXZlbnRMaXN0ZW5lciBvbmtleXByZXNzOworICAgICAgICBhdHRyaWJ1dGUg
W1Byb3RlY3RlZExpc3RlbmVyXSBFdmVudExpc3RlbmVyIG9ua2V5dXA7CisgICAgICAgIGF0dHJp
YnV0ZSBbUHJvdGVjdGVkTGlzdGVuZXJdIEV2ZW50TGlzdGVuZXIgb25sb2FkOworICAgICAgICBh
dHRyaWJ1dGUgW1Byb3RlY3RlZExpc3RlbmVyXSBFdmVudExpc3RlbmVyIG9ubW91c2Vkb3duOwor
ICAgICAgICBhdHRyaWJ1dGUgW1Byb3RlY3RlZExpc3RlbmVyXSBFdmVudExpc3RlbmVyIG9ubW91
c2Vtb3ZlOworICAgICAgICBhdHRyaWJ1dGUgW1Byb3RlY3RlZExpc3RlbmVyXSBFdmVudExpc3Rl
bmVyIG9ubW91c2VvdXQ7CisgICAgICAgIGF0dHJpYnV0ZSBbUHJvdGVjdGVkTGlzdGVuZXJdIEV2
ZW50TGlzdGVuZXIgb25tb3VzZW92ZXI7CisgICAgICAgIGF0dHJpYnV0ZSBbUHJvdGVjdGVkTGlz
dGVuZXJdIEV2ZW50TGlzdGVuZXIgb25tb3VzZXVwOworICAgICAgICBhdHRyaWJ1dGUgW1Byb3Rl
Y3RlZExpc3RlbmVyXSBFdmVudExpc3RlbmVyIG9ubW91c2V3aGVlbDsKKyAgICAgICAgYXR0cmli
dXRlIFtQcm90ZWN0ZWRMaXN0ZW5lcl0gRXZlbnRMaXN0ZW5lciBvbnJlc2V0OworICAgICAgICBh
dHRyaWJ1dGUgW1Byb3RlY3RlZExpc3RlbmVyXSBFdmVudExpc3RlbmVyIG9ucmVzaXplOworICAg
ICAgICBhdHRyaWJ1dGUgW1Byb3RlY3RlZExpc3RlbmVyXSBFdmVudExpc3RlbmVyIG9uc2Nyb2xs
OworICAgICAgICBhdHRyaWJ1dGUgW1Byb3RlY3RlZExpc3RlbmVyXSBFdmVudExpc3RlbmVyIG9u
c2VhcmNoOworICAgICAgICBhdHRyaWJ1dGUgW1Byb3RlY3RlZExpc3RlbmVyXSBFdmVudExpc3Rl
bmVyIG9uc2VsZWN0OworICAgICAgICBhdHRyaWJ1dGUgW1Byb3RlY3RlZExpc3RlbmVyXSBFdmVu
dExpc3RlbmVyIG9uc3VibWl0OworICAgICAgICBhdHRyaWJ1dGUgW1Byb3RlY3RlZExpc3RlbmVy
XSBFdmVudExpc3RlbmVyIG9udW5sb2FkOworICAgICAgICBhdHRyaWJ1dGUgW1Byb3RlY3RlZExp
c3RlbmVyXSBFdmVudExpc3RlbmVyIG9uYmVmb3JldW5sb2FkOworICAgICAgICBhdHRyaWJ1dGUg
W1Byb3RlY3RlZExpc3RlbmVyXSBFdmVudExpc3RlbmVyIG9ud2Via2l0YW5pbWF0aW9uc3RhcnQ7
CisgICAgICAgIGF0dHJpYnV0ZSBbUHJvdGVjdGVkTGlzdGVuZXJdIEV2ZW50TGlzdGVuZXIgb253
ZWJraXRhbmltYXRpb25pdGVyYXRpb247CisgICAgICAgIGF0dHJpYnV0ZSBbUHJvdGVjdGVkTGlz
dGVuZXJdIEV2ZW50TGlzdGVuZXIgb253ZWJraXRhbmltYXRpb25lbmQ7CisgICAgICAgIGF0dHJp
YnV0ZSBbUHJvdGVjdGVkTGlzdGVuZXJdIEV2ZW50TGlzdGVuZXIgb253ZWJraXR0cmFuc2l0aW9u
ZW5kOwogCiAgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQogICAgICAgICBbQ3VzdG9t
XSB2b2lkIGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIApJbmRleDogeG1sL1hN
TEh0dHBSZXF1ZXN0LmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09PT09PT09Ci0tLSB4bWwvWE1MSHR0cFJlcXVlc3QuaWRsCShy
ZXZpc2lvbiAzNzEzOSkKKysrIHhtbC9YTUxIdHRwUmVxdWVzdC5pZGwJKHdvcmtpbmcgY29weSkK
QEAgLTMzLDE0ICszMywxNCBAQCBtb2R1bGUgeG1sIHsKICAgICBdIFhNTEh0dHBSZXF1ZXN0IHsK
ICAgICAgICAgLy8gRnJvbSBYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0CiAgICAgICAgIC8vIGV2
ZW50IGhhbmRsZXIgYXR0cmlidXRlcwotICAgICAgICBhdHRyaWJ1dGUgW0N1c3RvbV0gRXZlbnRM
aXN0ZW5lciBvbmFib3J0OwotICAgICAgICBhdHRyaWJ1dGUgW0N1c3RvbV0gRXZlbnRMaXN0ZW5l
ciBvbmVycm9yOwotICAgICAgICBhdHRyaWJ1dGUgW0N1c3RvbV0gRXZlbnRMaXN0ZW5lciBvbmxv
YWQ7Ci0gICAgICAgIGF0dHJpYnV0ZSBbQ3VzdG9tXSBFdmVudExpc3RlbmVyIG9ubG9hZHN0YXJ0
OwotICAgICAgICBhdHRyaWJ1dGUgW0N1c3RvbV0gRXZlbnRMaXN0ZW5lciBvbnByb2dyZXNzOwor
ICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFib3J0OworICAgICAgICBhdHRyaWJ1
dGUgRXZlbnRMaXN0ZW5lciBvbmVycm9yOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5l
ciBvbmxvYWQ7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9ubG9hZHN0YXJ0Owor
ICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnByb2dyZXNzOwogCiAgICAgICAgIC8v
IGV2ZW50IGhhbmRsZXIgYXR0cmlidXRlcwotICAgICAgICBhdHRyaWJ1dGUgW0N1c3RvbV0gRXZl
bnRMaXN0ZW5lciBvbnJlYWR5c3RhdGVjaGFuZ2U7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExp
c3RlbmVyIG9ucmVhZHlzdGF0ZWNoYW5nZTsKIAogICAgICAgICAvLyBzdGF0ZQogICAgICAgICBj
b25zdCB1bnNpZ25lZCBzaG9ydCBVTlNFTlQgPSAwOwpJbmRleDogeG1sL1hNTEh0dHBSZXF1ZXN0
VXBsb2FkLmlkbAo9PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09PT09
PT09PT09PT09PT09PT09PT09PT09Ci0tLSB4bWwvWE1MSHR0cFJlcXVlc3RVcGxvYWQuaWRsCShy
ZXZpc2lvbiAzNzEzOSkKKysrIHhtbC9YTUxIdHRwUmVxdWVzdFVwbG9hZC5pZGwJKHdvcmtpbmcg
Y29weSkKQEAgLTM0LDExICszNCwxMSBAQCBtb2R1bGUgeG1sIHsKICAgICBdIFhNTEh0dHBSZXF1
ZXN0VXBsb2FkIHsKICAgICAgICAgLy8gRnJvbSBYTUxIdHRwUmVxdWVzdEV2ZW50VGFyZ2V0CiAg
ICAgICAgIC8vIGV2ZW50IGhhbmRsZXIgYXR0cmlidXRlcwotICAgICAgICBhdHRyaWJ1dGUgW0N1
c3RvbV0gRXZlbnRMaXN0ZW5lciBvbmFib3J0OwotICAgICAgICBhdHRyaWJ1dGUgW0N1c3RvbV0g
RXZlbnRMaXN0ZW5lciBvbmVycm9yOwotICAgICAgICBhdHRyaWJ1dGUgW0N1c3RvbV0gRXZlbnRM
aXN0ZW5lciBvbmxvYWQ7Ci0gICAgICAgIGF0dHJpYnV0ZSBbQ3VzdG9tXSBFdmVudExpc3RlbmVy
IG9ubG9hZHN0YXJ0OwotICAgICAgICBhdHRyaWJ1dGUgW0N1c3RvbV0gRXZlbnRMaXN0ZW5lciBv
bnByb2dyZXNzOworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmFib3J0OworICAg
ICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbmVycm9yOworICAgICAgICBhdHRyaWJ1dGUg
RXZlbnRMaXN0ZW5lciBvbmxvYWQ7CisgICAgICAgIGF0dHJpYnV0ZSBFdmVudExpc3RlbmVyIG9u
bG9hZHN0YXJ0OworICAgICAgICBhdHRyaWJ1dGUgRXZlbnRMaXN0ZW5lciBvbnByb2dyZXNzOwog
CiAgICAgICAgIC8vIEV2ZW50VGFyZ2V0IGludGVyZmFjZQogICAgICAgICBbQ3VzdG9tXSB2b2lk
IGFkZEV2ZW50TGlzdGVuZXIoaW4gRE9NU3RyaW5nIHR5cGUsIAo=
</data>
<flag name="review"
          id="10826"
          type_id="1"
          status="+"
          setter="zimmermann"
    />
          </attachment>
      

    </bug>

</bugzilla>